LeetCode - Search in Rotated Sorted Array II | Darren's Blog



Follow up for LeetCode - Search in Rotated Sorted Array: what if duplicates are allowed? Would this affect the run-time complexity? How and why? Write a function to determine if a given target is in the array.
Just when A[left]==A[center], we cannot say the previous part is ordered, then we just go to the next element and check again.
public boolean search(int[] A, int target) {
        if (A == null || A.length == 0)
            return false;
        int left = 0, right = A.length - 1;
        // Apply binary search when it is sure which part is sorted
        while (left <= right) {
            int center = (left+right) / 2;
            if (A[center] == target)        // Target found
                return true;
            if (A[center] > A[left]) {  // The left part is sorted
                if (target >= A[left] && target < A[center])
                    right = center - 1;
                else
                    left = center + 1;
            } else if (A[center] < A[left]) {   // The right part is sorted
                if (target <= A[right] && target > A[center])
                    left = center + 1;
                else
                    right = center - 1;
            } else {    // cannot say which part is sorted
                left++;
            }
        }
 
        return false;
    }
Read full article from LeetCode - Search in Rotated Sorted Array II | Darren's Blog

No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts