Sort by

recency

|

1949 Discussions

|

  • + 0 comments

    Example original queue is wrong?

  • + 0 comments
    public static void minimumBribes(List<Integer> q) {
        int bribes = 0;
        int qSize = q.size();
    
        for (int i = 0; i < qSize; i++ ) {
            int num = q.get(i);
            if (num - 1 - i > 2) {
                System.out.println("Too chaotic");
                return;
            }
    
            for (int j = Math.max(0, num - 2); j < i ; j++) {
                if (q.get(j) > num) bribes++;
            }
        }
        System.out.println(bribes);
        return;
    }
    
  • + 0 comments
    def minimumBribes(q):
        # Write your code here
        bribe = 0
        for i in range(len(q)):
            # one person can bribe at most 2 others
            if q[i] - (i + 1) > 2:
                print("Too chaotic")
                return
        while q != sorted(q):
            for i in range(len(q)-1):
                if q[i] > q[i+1]:
                    q[i], q[i+1] = q[i+1], q[i]
                    bribe += 1
        print(bribe)
    
  • + 0 comments

    Python

    def minimumBribes(a):
        # Write your code here
        bribes = 0
        for i in reversed(range(1, len(a))):
            individual_bribe = 0
            if a[i-1] > a[i]:
                id = i-1
                briber = a[id]
                for j in range(i, len(a)):
                    if briber > a[j]:
                        individual_bribe += 1
                        bribes += 1
                if individual_bribe >= 3: 
                    print("Too chaotic")
                    return  
                sort_sub = a[id:]
                a = a[:id] + sorted(sort_sub)
    
        print(bribes)
    
  • + 0 comments

    This is my solution with Ruby: Note: you need to print the output yourselfe. Otherwise it says no output in stdout!

    def minimumBribes(q)
        # Write your code here
    
        last_index = q.length-1
        bribe_count = Hash.new(0)
        any_bribe = true
        while any_bribe && last_index > 0
            any_bribe = false
            for i in (0..last_index-1)
                 if q[i] > q[i+1]
                    any_bribe = true
                    bribe_count[q[i]] +=1
                    if bribe_count[q[i]] > 2
                         puts "Too chaotic"
                         return
                    end
                    bribe(i, q)
                end
            end
            last_index -= 1
        end
      
       p (bribe_count.values.sum)
    end
    
    def bribe(i, q)
        q[i], q[i+1] = q[i+1], q[i]
    end