课内-数据结构
代码搬运工小菜狗
呵呵
展开
-
【leetcode】打印从1到最大的n位数
本来是道简单题,但是评论区有人说如果再给大一些需要考虑大数超过INT_MAX的情况.我们可以递归全排列输出:class Solution { int[] res; int count = 0; public int[] printNumbers(int n) { res = new int[(int)Math.pow(10, n) - 1]; for(int digit = 1; digit < n + 1; digit++){原创 2022-04-16 21:30:02 · 111 阅读 · 0 评论 -
【leetcode】重复数字
今天做了一道简单题但是看到了空间O(1),时间O(N)的妙解:题目如下:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000我法:新数组当作字典,这样就是O(N)妙法:原本的数组当作字典,因为题目说n大小的原创 2022-04-16 21:03:16 · 536 阅读 · 0 评论 -
【leetcode】最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”这有个妙法:马拉车(manancher)不过,不过,马拉车算法几乎不太可能出现在一般面试当中,是属于程序竞赛范畴的解法。》》改进一中心探测法一个不好之处,在于它要分奇偶(中心是两个相同字符,还是一个字符)我们怎么统一它呢?加入分隔符。比如“abccba”,变成“#a#b#c#c#b#a#”就原创 2022-04-12 13:20:58 · 684 阅读 · 0 评论 -
【leetcode】摩尔投票法
新方法!思路不太好描述,看代码吧(Java)class Solution { public int majorityElement(int[] nums) { int voters = nums[0]; //被投票者 int votes = 1; //投票数 for(int i = 1; i<nums.length; i++){ if(nums[i]==voters){ votes原创 2022-04-10 00:05:17 · 310 阅读 · 0 评论 -
【leetcode】一道让我卧槽的看似简单题
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。没看题还纳闷为啥是中等题,原来不让用那些。。。。要是没有限制,我们显然可用递归。但是不让用if,那么递归出口还能怎么写呢?答案就是逻辑运算符的短路性质。以逻辑运算符 && 为例,对于 A && B 这个表达式,如果 A 表达式返回 False ,那么 A && B 已经确定为False ,此时不会去执行表达式 B。同原创 2022-04-05 20:33:10 · 237 阅读 · 0 评论 -
【数据结构】【洛谷】P3375模板题 KMP
主要还是KMP算法,上学期没学,只是考前抱了抱佛脚,也没怎么弄明白.先放代码://KMP #include <bits/stdc++.h>//万能头using namespace std;string s,t;//s文本串,t模式串//用char数组比较符合习惯,但是想试试string类int nxt[100002];//在全局变量区,一般这个数组会初始化为全0//getNext函数实际上就是让t自己与自己进行一个匹配.void getNext(string& t)/.原创 2022-01-25 14:56:43 · 591 阅读 · 0 评论 -
【数据结构与算法】希尔排序 python和c++实现
算法思路每一次:固定间隔把数据分组,每一组进行排序每次比上次选取更小的间隔分组,再每组排序,直到间隔为1代码c++:(越看越不明白了,后看)int gap = length;//length是数组的元素个数,gap是间隔长度 while (gap>1){ gap = gap/3 +1;///其实就是生成一个间隔序列 for (int i = gap; i<length; i+=gap) { int current = ar原创 2021-11-23 15:11:41 · 1305 阅读 · 2 评论