Skip to content

Commit bd723a5

Browse files
committed
Largest Number/ Rotate Array
1 parent 50387c1 commit bd723a5

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

179 Largest Number.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'''
2+
Given a list of non negative integers, arrange them such that they form the largest number.
3+
4+
For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.
5+
6+
Note: The result may be very large, so you need to return a string instead of an integer.
7+
'''
8+
9+
from functools import cmp_to_key
10+
11+
12+
class Solution:
13+
# @param {integer[]} nums
14+
# @return {string}
15+
def largestNumber(self, nums):
16+
sorted_nums = sorted(map(str, nums), key=cmp_to_key(lambda x, y: int(y + x) - int(x + y)))
17+
result = ''.join(sorted_nums).lstrip('0')
18+
return result or '0'
19+
20+
21+
if __name__ == "__main__":
22+
assert Solution().largestNumber([3, 30, 34, 5, 9]) == '9534330'
23+
assert Solution().largestNumber([0, 0]) == '0'

189 Rotate Array.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'''
2+
Rotate an array of n elements to the right by k steps.
3+
4+
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
5+
6+
Note:
7+
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
8+
'''
9+
10+
class Solution(object):
11+
def rotate(self, nums, k):
12+
"""
13+
:type nums: List[int]
14+
:type k: int
15+
:rtype: void Do not return anything, modify nums in-place instead.
16+
"""
17+
18+
def reverse(nums, start, end):
19+
while start < end:
20+
nums[start], nums[end] = nums[end], nums[start]
21+
start += 1
22+
end -= 1
23+
24+
n = len(nums)
25+
k %= n
26+
reverse(nums, 0, n - k - 1)
27+
reverse(nums, n - k, n - 1)
28+
reverse(nums, 0, n - 1)
29+
30+
31+
if __name__ == "__main__":
32+
nums = [1, 2, 3, 4, 5, 6, 7]
33+
Solution().rotate(nums, 10)
34+
assert nums == [5, 6, 7, 1, 2, 3, 4]

0 commit comments

Comments
 (0)