初级算法
删除排序数组中的重复项
给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 |
示例 1:
输入:nums = [1,1,2] |
示例 2:
输入:nums = [0,0,1,1,1,2,2,3,3,4] |
我的答案:(未通过)
class Solution { |
参考答案:
class Solution { |
买卖股票的最佳时机 II
给定一个数组prices其中 prices[i] 是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例 1:
输入: prices = [7,1,5,3,6,4] |
示例 2:
输入: prices = [1,2,3,4,5] |
示例 3:
输入: prices = [7,6,4,3,1] |
我的答案:(更优)
class Solution { |
参考答案:
class Solution { |
旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
进阶:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?
示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3 |
示例 2:
输入:nums = [-1,-100,3,99], k = 2 |