网站制作计划,360ssp里的网站建设,网络推广协议合同范本,大学生网站建设策划书范文LCR 140. 训练计划 IIhttps://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号#xff0c;请查找并返回倒数第 cnt 个训练项目编号。 思路#xff1a;双指针#xff0c;快指针先走cnt…LCR 140. 训练计划 IIhttps://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号请查找并返回倒数第 cnt 个训练项目编号。 思路双指针快指针先走cnt步然后快慢指针同时向前走当快指针为空时慢指针所在位置即为倒是第cnt个编号 class Solution {
public:ListNode* trainingPlan(ListNode* head, int cnt) {ListNode *fasthead,*slowhead;for(int i1;icnt;i)fastfast-next;while(fast){fastfast-next;slow slow-next;}return slow;}
};
141. 环形链表https://leetcode.cn/problems/linked-list-cycle/ 如果链表中有某个节点可以通过连续跟踪 next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 则返回 true 。 否则返回 false 。 思路双指针一个快指针一个慢指针快指针每次走两步有风险快指针可能为空要特殊处理一下慢指针走一步。如果两个指针能相遇则有环如果不能相遇则没有环 class Solution {
public:bool hasCycle(ListNode *head) {ListNode *fasthead,*slowhead;while(fastfast-next){fastfast-next-next;slowslow-next;if(fastslow)return 1;}return false;}
};
26. 删除有序数组中的重复项https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 给你一个 非严格递增排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k 你需要做以下事情确保你的题解可以被通过
更改数组 nums 使 nums 的前 k 个元素包含唯一元素并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k 。 思想双指针快指针如果与慢指针相等快指针当快指针不等于慢指针时慢指针快慢赋值给慢指针然后快指针。直到快指针遍历完数组结束。 class Solution {
public:int removeDuplicates(vectorint nums) {int fast1,slow0;if(nums.size()1)return 1;while(fastnums.size()){if(nums[fast]nums[slow])fast;else{slow;nums[slow]nums[fast];fast;}}return slow1;}
};
53. 最大子数组和https://leetcode.cn/problems/maximum-subarray/ 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组子数组最少包含一个元素返回其最大和。子数组是数组中的一个连续部分。 思路将数组和与最大和比较如果数组和大于最大和则更新否则最大和加下一位数组元素判断有没有当前最大和大。 class Solution {
public:int maxSubArray(vectorint nums) {int maxINT_MIN;int sum0;for(int i0;inums.size();i){sumnums[i];if(summax)maxsum;if(sum0)sum0;}return max;}
};
876. 链表的中间结点https://leetcode.cn/problems/middle-of-the-linked-list/ 给你单链表的头结点 head 请你找出并返回链表的中间结点。 如果有两个中间结点则返回第二个中间结点。 思路快指针走两步慢指针走一步 class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* fasthead,*slow head;while(fast fast-next){fastfast-next-next;slowslow-next;}return slow;}
};
21. 合并两个有序链表https://leetcode.cn/problems/merge-two-sorted-lists/ 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路当头节点和中间节点的处理方式不同时手动添加一个虚头节点 class Solution {
public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {//创建虚头节点ListNode* Head new ListNode();ListNode* Tail Head;while(l1 l2){if(l1-vall2-val){Tail-nextl1;l1l1-next;}else{Tail-nextl2;l2l2-next;}TailTail-next;}//判断剩余if(l1) Tail-nextl1;if(l2) Tail-nextl2;return Head-next;}
};