双指针
文章平均质量分 52
我不是宸哥
要为真理而斗争
展开
-
链表中环的入口结点
给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n\le10000n≤10000,1<=结点值<=100001<=结点值<=10000要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。输入描述:输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台会根据原创 2022-03-24 19:21:57 · 1159 阅读 · 0 评论 -
JZ22 链表中倒数最后k个结点
输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。数据范围:0 \le n \le 50000≤n≤5000,数组中每个数的值 0 \le val \le 100000≤val≤10000要求:时间复杂度 O(n)O(n),空间复杂度 O(n)O(n)进阶:时间复杂度 O(n^2)O(n2),空间复杂度 O(1)O(1)方法一:快慢指针,不难,考虑一下特殊情况原创 2022-03-24 18:54:26 · 63 阅读 · 0 评论 -
每日一题15
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。方法一:跟每日一题14很相似,先排序,再双指针。classSolution{public:voidisans(intsum,int*ans,inttarget){if(abs(sum-target)<abs(*ans-target)){...原创 2022-03-18 16:16:58 · 195 阅读 · 0 评论 -
每日一题14
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。方法一:曾设想使用三层循环来暴力求解,但发现时间复杂度过高并且要求不重复的三元组还需要使用哈希,代码也复杂。 优化后可以使用两层循环,第二层循环加双指针,可以更好的完成classSolution{public:vector<vector<int>>t...原创 2022-03-18 14:47:50 · 244 阅读 · 0 评论 -
每日一题12
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。方法一:遍历法(雾classSolution{public:stringlongestCommonPrefix(vector<string>&strs){stringans="";stringminstr=*min_element(strs.begin(),strs.end());intn=...原创 2022-03-17 17:04:01 · 199 阅读 · 0 评论 -
每日一题11
给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。方法一:暴力解法(果然超时间了classSolution{public:intmaxArea(vector<int>&height){intmaxc=0;...原创 2022-03-17 16:43:17 · 405 阅读 · 0 评论