贪心算法(自刷)
贪心算法(自刷)53.最大子序和
53最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
思路:
初始化
定义一个当前和curSum,为负数的时候就清零从新累计,初始值为0;
定义一个最大和maxSum,每当curSum求出之后都要拿来比较一下,进行更新,初始值为Integer.MIN_VALUE,保证计算第一
元素的时候maxSum就更新为curSum;
遍历,对每一个元素进行如下操作:
计算当前和curSum;
更新最大和maxSum;
更新当前和curSum,若为负数则清零
返回
代码:1234567891011121314151617181920212223class Solution{public: int maxSubArray(vector<int> &nums) { //类似寻找最大最小值的题目,初始 ...
copy(自刷)
副本文件题目一
题目一
链表(自刷)
链表两两交换链表中的节点
合并两个有序链表
两两交换链表中的节点
24. 两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:12输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:12输入:head = []输出:[]示例 3:12输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100
思路定义一个虚拟头结点dummylisty,如果存在可以交换的节点,则按照题目要求把相应位置的节点插入到相应位置。
123456789101112131415161718192021222324class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode *dummyList =new ListNode(-1,head); dummyList->next ...