过去会遗忘,现在不会

随笔分类 -  leedcode题目

c++语言
字符串相乘
摘要:给定两个字符串,长度在[1,200]这个区间 字符串只有数字,求它们的乘积并返回结果的字符串。不准使用内置函数。 一开始想的是直接循环相加,毕竟乘积的本质也是累加,加法也更容易实现。 后来发现数字太大的话(比如150位),根本没办法循环相加,就很蠢。 于是直接乘。乘法原理上过小学的都知道。 说下算法 阅读全文

posted @ 2023-06-27 15:17 WhatAnyWay 阅读(226) 评论(0) 推荐(0)

leetcode5最:长回文子串
摘要:动态规划: 1个回文串,两边加上同样的字符,也是回文串。这是一个性质,之后要用。 对于一大串字符,从1长度的子串开始判断。 1个长度的子串,肯定回文;如果这个子串两边加上同样的字符,长度变成了3,少了一次判断。 因此还要加上,判断2长度的子串是不是回文。 之后才会判断3长度的子串是不是回文。 以此类 阅读全文

posted @ 2023-06-23 22:03 WhatAnyWay 阅读(14) 评论(0) 推荐(0)

机器人走路问题
摘要:就是一个坐标轴,从1开始到N,机器人处于其中某个位置cur,问它走到另一个位置aim有几种走法?限定机器人必须走k步。且在1或N位置的时候,只能返回2或N-1,其余位置两个方向都能走。 首先理解一下递归。 机器人从cur位置开始走,假如这个cur在1这个位置,那么它只能去2;假如cur在N这个位置, 阅读全文

posted @ 2023-06-22 03:44 WhatAnyWay 阅读(68) 评论(0) 推荐(0)

爬楼梯
摘要:经典动态规划入门 看难题看累了找个简单的换换脑子。 爬楼梯,每次爬1或2层,问爬到第n层有几种方法。 class Solution { public: int climbStairs(int n) { if(n<3) return n; int ans=0; int f1,f2; f1=1;f2=2 阅读全文

posted @ 2023-06-22 02:53 WhatAnyWay 阅读(16) 评论(0) 推荐(0)

无重复最长字串
摘要:滑动窗口类型的, class Solution { public: int lengthOfLongestSubstring(string s) { int l=0;int r=0;int length=0; string ans; while(r<s.size()) { if(ans.find(s 阅读全文

posted @ 2023-06-21 04:01 WhatAnyWay 阅读(17) 评论(0) 推荐(0)

斐波那契数列
摘要:动态规划入门,复习一下。 正序计算。 class Solution { public: int fib(int n) { unordered_map<int,int> map; map.emplace(0,0); map.emplace(1,1); map.emplace(2,1); if (n<3 阅读全文

posted @ 2023-06-21 03:18 WhatAnyWay 阅读(28) 评论(0) 推荐(0)

接雨水
摘要:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 没啥说的,直接把每个柱子抽象成一个木桶,只需要找到这个木桶两边的高度,根据木桶原理判断里面的水量就好了。 只需要思考一下如何确定木桶的两边就好了。 class Solution { public: i 阅读全文

posted @ 2023-06-19 23:45 WhatAnyWay 阅读(49) 评论(0) 推荐(0)

旋转字符串
摘要:给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。 s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。 来源:力扣(LeetCode)链接:https://l 阅读全文

posted @ 2023-06-19 09:11 WhatAnyWay 阅读(15) 评论(0) 推荐(0)

三数之和
摘要:给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请 你返回所有和为 0 且不重复的三元组。 来源:力扣(Le 阅读全文

posted @ 2023-06-19 03:55 WhatAnyWay 阅读(27) 评论(0) 推荐(0)

盛水最多的容器
摘要:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 乍一看几乎没啥思路,不过把题目抽象一下,不就是求一个长方形 阅读全文

posted @ 2023-06-18 23:38 WhatAnyWay 阅读(34) 评论(0) 推荐(0)

移动零
摘要:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 不用双指针的话直接原地修改数组,count存0的个数,对于不为0的数,如果它前面没有0,就不动,有零的话,就往前移动count位,最后从尾部补充co 阅读全文

posted @ 2023-06-18 02:46 WhatAnyWay 阅读(74) 评论(0) 推荐(0)

最长连续序列
摘要:找出一个数组最长的连续序列(重复的不算),要求复杂度位O(N) 。 示例: 输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 假如不考虑复杂度,直接哈希搜索,对每个数都找一下它能连续的长度,返回最大的那个长度就行。 阅读全文

posted @ 2023-06-18 02:18 WhatAnyWay 阅读(122) 评论(0) 推荐(0)

字母异位词分组
摘要:记录一下从蒙蔽到理解的过程吧。 题目:给一个vector<string> 里面的字符串都是小写字母组成的,判断是vector<string>里是否存在完全一样的字母组成的字符串,有的话把他们分组。比如{"abc","cba"}就是一样的。 首先一开始想的是根据字符串字母的ASCII码之和确定字符是否 阅读全文

posted @ 2023-06-17 17:03 WhatAnyWay 阅读(25) 评论(0) 推荐(0)

反转链表
摘要:反转链表最常用的就是双指针法了 图解: 首先,创建两个指针,begin和end,一个begin为空,一个end指向链表开头1。 然后begin=end;end往后移动指向像一个节点,如下图 重复以上步骤,直到end为空。 代码如下 /** * Definition for singly-linked 阅读全文

posted @ 2023-06-03 15:48 WhatAnyWay 阅读(48) 评论(0) 推荐(0)

剑指offer 58 2 左旋转字符串
摘要:将左边n个字符转移到字符串结尾,比如 s=abcdefg ,n=2;输出cdefgab。看起来不难,但是解法还是挺多的,重要的是复杂度。 还是先写下思路, 常规的思路(暴力):就是定义两个字符串str1,str2,n之后的字符全部拷贝进入str2,然后再把k和k之前字符的拷贝进入str1,返回str 阅读全文

posted @ 2023-05-31 18:59 WhatAnyWay 阅读(15) 评论(0) 推荐(0)

剑指offer 从尾到头打印链表
摘要:之前写的,利用栈先进后出的原理,把链表压进栈,再打印就行了,非常简单。可能是为了之后的反转链表铺垫。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNod 阅读全文

posted @ 2023-05-31 15:53 WhatAnyWay 阅读(15) 评论(0) 推荐(0)

剑指offer 替换空格
摘要:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 注意下,字符用单引号' '括起来,字符串用双引号“ ”括起来,那么“%20”就是一个字符串,里面有三个字符,而替换的空格只有一个字符。 所以替换大概是这样,找到第一个空格,字符串扩容两格,把第一个空格后面的字符统统向后移动两位,然后从第一 阅读全文

posted @ 2023-05-31 15:44 WhatAnyWay 阅读(29) 评论(0) 推荐(0)