Leetcode Easy problem #1(Python June 19. 2019)
This is written to record the experience I solve the leetcode easy problems. I will take down some algorithm which I prefer and record some point where I may make mistake easily.
1. Two Sums
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
Solution:
class Solution(object):
def twoSum(self, nums, target):
""
:type nums: List[int]
:type target: int
:rtype: List[int]
""
h = {}
for i, n in list(enumerate(nums)):
if target-n not in h:
h[n] = i
else:
return [h[target-n], i]
enumerate
is used for marking the numbers in the list with the serial numbers and puting them in the original list in the form of tuples.
note
: enumerate(list) would just a code, so use it with list(enumerate(list)) or other style.
eg
: list(enumerate(1,3,4,5)) —> [(0,1), (1,3), (2,4), (3,5)]
7. Reverse Integer
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
Solution:
class Solution(object):
def reverse(self, x):
""
:type x: int
:rtype: int
""
n = x if x > 0 else -x
a = 0
while n:
a = a*10 + n%10
n = int(n/10)
if a > 0x7fffffff or a < -0x7fffffff:
return 0
else:
return a if x > 0 else -a
Note
: % would be different between positive number and negative number, eg: 123%10 = 3, -123%10 = 7
0x7fffffff
is the biggest number in 32-bit number
a = 0
while n:
a = a*10 + n%10
n = int(n/10)
This is a good way to get the reverse of a interger.