27 加一
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/27/很简单,数组从最后往前遍历,记录进位的情况,当不需要进位或结束时退出。
结束后最后如果还需要进位,则在数组最前插入1.
# @param {Integer[]} digits
# @return {Integer[]}
def plus_one(digits)
plus=1
(digits.size-1).downto 0 do |i|
if(plus==1)
plus = (digits[i]+1)/10
digits[i] = (digits[i]+1)%10
end
end
if(plus == 1)
digits.insert(0,plus)
end
digits
end
28 移动零
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/27/遍历数组,维护一个下标表示非0元素的末尾,最后在填充满0就行了。
void moveZeroes(int* nums, int numsSize) {
int i=0, non_zero = 0;
for(;i<numsSize;i++){
if(nums[i]){
nums[non_zero++] = nums[i];
}
}
for(i=non_zero;i<numsSize;i++){
nums[i]=0;
}
}
29 两数之和
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/29/除了用最原始的方法外,还可以用hashmap。hashmap是个好东西,后面要复习一下。
# @param {Integer[]} nums
# @param {Integer} target
# @return {Integer[]}
def two_sum(nums, target)
map = {}
#res = []
nums.each_with_index do |e,i|
if map[e]
#res.push i
#res.push map[nums[i]]
#map.delete nums[i]
return map[e],i
else
map[target-e]=i
end
end
#res
end
#O(n) Space, O(n) Time