4

I am trying modify a list. Currently, there is a list with random number and I would like to change the list which creates maximum number of increase between numbers. Maybe I worded badly. For example, if list is [2,3,1,2,1], I would modify into [1,2,3,1,2] since 1->2, 2->3 and 1->2 in an increase which gives total of 3 increasing sequence. Any suggestions?

1
  • What the desired result of the following list [2,3,1,2,1,4,2,2,3,1] be [1, 2, 3, 1, 2, 1, 2, 3, 4, 1]? Commented Mar 23, 2019 at 9:58

1 Answer 1

1

I would approach your problem with this recursive algorithm. What I am doing is sorting my list, putting all duplicates at the end, and repeating the same excluding the sorted, duplicate-free list.

def sortAndAppendDuplicates(l):

    l.sort()
    ll = list(dict.fromkeys(l)) # this is 'l' without duplicates
    i = 0
    while i < (len(ll)-1):
        if list[i] == list[i+1]:
            a = list.pop(i)
            list.append(a)
            i = i - 1
        i = i + 1

    if hasNoDuplicates(l):
        return l
    return ll + sortAndAppendDuplicates(l[len(ll):])

def hasNoDuplicates(l):

     return( len(l) == len( list(dict.fromkeys(l)) ) )


print(sortAndAppendDuplicates([2,3,6,3,4,5,5,8,7,3,2,1,3,4,5,6,7,7,0,1,2,3,4,4,5,5,6,5,4,3,3,5,1,2,1]))

# this would print [0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 3, 4, 5, 3, 5, 3, 5] 
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.