![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
双指针法
ggaoda
这个作者很懒,什么都没留下…
展开
-
leetcode-202.快乐数
编写一个算法来判断一个数n是不是快乐数。「快乐数」定义为对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是无限循环但始终变不到1。如果这个过程结果为1,那么这个数就是快乐数。如果n是快乐数就返回true;不是,则返回false。...原创 2022-07-25 12:56:04 · 105 阅读 · 0 评论 -
郑州轻工业大学2021-2022(2)数据结构习题集 6-7
郑州轻工业大学2021-2022(2)数据结构习题集6-7 求链表的倒数第m个元素 (20 分)题目详情请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素。函数接口定义:ElementType Find( List L, int m );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */原创 2022-04-17 22:24:15 · 375 阅读 · 0 评论 -
leetcode-977. 有序数组的平方
双指针法题目详情给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]暴力解法:class Solution {public: v原创 2022-04-11 11:29:18 · 147 阅读 · 0 评论 -
剑指 Offer 05.替换空格
双指针法题目详情请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例1:输入:s = "We are happy."输出:"We%20are%20happy."```我的代码:class Solution {public: string replaceSpace(string s) { int count=0,oldsize=s.size(); for (int i = 0;i < oldsize;++i)原创 2022-04-06 15:33:49 · 53 阅读 · 0 评论 -
leetcode-75.颜色分类
题目详情给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。示例1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例2:输入:nums = [2,0,1]输出:[0,1,2]我的方法:利用三个指针来进行一次遍历排序,一个头用来存0,一个尾用来存2,一.原创 2022-04-05 17:16:22 · 605 阅读 · 0 评论 -
leetcode-27. 移除元素
双指针法题目详情给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,原创 2022-03-27 15:32:16 · 99 阅读 · 0 评论 -
leetcode-524.通过删除字母匹配到字典里最长单词
双指针法题目详情给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。示例1:输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]输出:"apple"示例2:输入:s = "abpcplea", dictionary = ["a"原创 2022-03-26 17:13:01 · 1293 阅读 · 0 评论 -
leetcode-680.验证回文字符串II
双指针法题目详情给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例1:输入: s = "aba"输出: true示例2:输入: s = "abca"输出: true解释: 你可以删除c字符。示例3:输入: s = "abc"输出: false我的初始错误代码:class Solution {public: bool validPalindrome(string s) { int l=0,flag=1,r=s.原创 2022-03-26 16:27:43 · 373 阅读 · 0 评论 -
leetcode-633.平方数之和
双指针法题目详情给定一个非负整数c ,你要判断是否存在两个整数 a和 b,使得 a2 + b2 = c 。示例1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例2:输入:c = 3输出:false我的代码:class Solution {public: bool judgeSquareSum(int c) { long left=0,right=int(sqrt(c)); while(left<原创 2022-03-26 15:17:57 · 639 阅读 · 0 评论 -
leetcode-167. 两数之和 II-输入有序数组
双指针法题目详情给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1]和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。以长度为 2的整数数组[index1, index2] 的形式返回这两个整数的下标 index1 和 index2。你可以假设每个输入 只对应唯一原创 2022-03-24 19:25:46 · 155 阅读 · 0 评论 -
leetcode-88.合并两个有序数组
双指针法题目详情给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示nums1 和 nums2 中的元素数目。请你 合并 nums2 到nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前m 个元素表示应合并的元素,后n个元素为 0 ,应忽略。nums2 的长度为n。示例1: 输入:nums1 = [1,原创 2022-03-25 15:51:16 · 847 阅读 · 0 评论 -
leetcode-142.环形链表 II
双指针法-快慢指针法Floyd题目详情给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例1:输入:head = [3,2,0,原创 2022-03-25 16:31:18 · 78 阅读 · 0 评论 -
leetcode-76. 最小覆盖子串
双指针法之滑动窗口法题目详情给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t所有字符的最小子串。如果 s 中不存在涵盖t 所有字符的子串,则返回空字符串 ""。注意:对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。示例1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"示例2:输入:s = "a", t = "a"输出:"a"示例3:输入: s原创 2022-03-25 20:04:44 · 325 阅读 · 0 评论