Sort by

recency

|

507 Discussions

|

  • + 0 comments

    Simulation Used

    def almostSorted(arr):
        nums = sorted(arr)
        if nums == arr:
            return "yes"
        swaps = []
        for i in range(len(arr)):
            if arr[i] != nums[i]:
                swaps.append(i+1)
        if len(swaps) == 2:
            print('yes')
            print('swap', swaps[0], swaps[1])
        else:
            if len(arr) > 2:
                reverse = [arr[i] for i in range(swaps[0]-1, swaps[-1])]
                if sorted(reverse) == reverse[::-1]:
                    print('yes')
                    print("reverse", swaps[0], swaps[-1])
                else:
                    print("no")
                    
    
  • + 0 comments

    def almostSorted(arr): sortArr = sorted(arr) swaps = [] for i in range(len(arr)): if arr[i] != sortArr[i]: swaps.append(i + 1) if len(swaps) == 2: print('yes') print('swap',swaps[0],swaps[1]) else: if len(arr) > 2: reverse = [arr[i] for i in range(swaps[0] - 1, swaps[-1])] if sorted(reverse) == reverse[::-1]: print('yes') print('reverse',swaps[0],swaps[-1]) else: print('no') return

  • + 0 comments

    you are probably missing this case where swap can occur at two different index check swap at 2 condition adjacent values and values that are far apart. cam free

  • + 0 comments
    def almostSorted(A):
        p=[]
        q=[]
        for i in range (len(A)-1):
           if A[i]>A[i+1]:
               q.append(i)
               p.append(i+1)
        if len(p)==2:
           A[q[0]],A[p[1]]=A[p[1]],A[q[0]]
           if A==sorted(A):
             print(f"yes\nswap {q[0]+1} {p[1]+1}")
           else:
             print('no')
        elif len(p)==1:
           A[q[0]],A[p[0]]=A[p[0]],A[q[0]]
           if A==sorted(A):
             print(f"yes\nswap {q[0]+1} {p[0]+1}")
           else:
            print('no')
        elif len(p)>2:
           pq=sorted(set(p)|set(q))
           A[pq[0]:pq[len(pq)-1]+1]=A[pq[0]:pq[len(pq)-1]+1][::-1]
           if A==sorted(A):
             print('yes')
             print(f"reverse {pq[0]+1} {pq[-1]+1}")
           else:
            print('no')
    
  • + 0 comments
    1. Scan sequence of number from the beginning.
    2. Identify whether the scanned sequence is swappable or reversable or not.
    3. After scanning, find out whether the sequence can be arranged by swap or reverse.
    4. It doesn't need to actually swap or reverse any elements. Maintaining the points is enough.

    https://github.com/jiaqing123/HackerRankApp/blob/master/HackerRankApp/Problems/AlmostSorted.cs