- 206. 反转链表">top 1 : 206. 反转链表
- 53. 最大子序和">top 2: 53. 最大子序和
- 21. 合并两个有序链表">top 3: 21. 合并两个有序链表
- 1. 两数之和">top 4: 1. 两数之和
- 121. 买卖股票的最佳时机">top 5:121. 买卖股票的最佳时机
top 1 : 206. 反转链表
题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表
示例:
示例1:
输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]
示例2:
输入:head = [1,2]
输出:[2,1]
示例3:
输入:head = []
输出:[]
提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
进阶:
链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
解题思路:
沙场练兵
1、python
2、c++
top 2: 53. 最大子序和
题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。
示例:
示例1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例2:
输入:nums = [1]
输出:1
示例3:
输入:nums = [5,4,-1,7,8]
输出:23
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
进阶:
如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。
解题思路:
沙场练兵
1、python
2、c++
top 3: 21. 合并两个有序链表
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
示例1
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例2
输入:l1 = [], l2 = []
输出:[]
示例3
输入:l1 = [], l2 = [0]
输出:[0]
提示:
● 两个链表的节点数目范围是 [0, 50]
● -100 <= Node.val <= 100
● l1 和 l2 均按 非递减顺序 排列
解题思路:
沙场练兵
1、python
2、c++
top 4: 1. 两数之和
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例:
示例1
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例2
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例3
输入:nums = [3,3], target = 6
输出:[0,1]
提示:
● 2 <= nums.length <= 104
● -109 <= nums[i] <= 109
● -109 <= target <= 109
● 只会存在一个有效答案
进阶: 你可以想出一个时间复杂度小于 O(n2) 的算法吗?
解题思路:
沙场练兵
1、python
2、c++
top 5:121. 买卖股票的最佳时机
题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
示例:
示例1
示例2
提示:
解题思路:
沙场练兵
1、python
2、c++
