数据结构与算法--LeetCode刷题汇总
文章平均质量分 69
代码随想录:https://programmercarl.com/ 学习汇总
小杜℃
这个作者很懒,什么都没留下…
展开
-
1,两数之和
1,两数之和原创 2022-10-05 09:54:56 · 207 阅读 · 1 评论 -
两两交换链表中的结点&删除链表的倒数第N个节点 &
23. 两两交换链表中的结点&19. 删除链表的倒数第N个节点 &面试02.07链表相交原创 2022-09-26 13:36:15 · 330 阅读 · 0 评论 -
有序数组平方&长度最小子数组&螺旋矩阵
977有序数组平方&209长度最小子数组&577螺旋矩阵||原创 2022-09-26 13:29:32 · 206 阅读 · 0 评论 -
移除链表中的元素&
207移除链表中的元素&707设计链表&206反转链表原创 2022-09-26 13:21:43 · 335 阅读 · 0 评论 -
有序数组平方&长度最小子数组&螺旋矩阵
977.有序数组平方&209长度最小子数组&57.螺旋矩阵||原创 2022-09-24 00:59:59 · 199 阅读 · 0 评论 -
二分查找&移除元素
力扣704,27原创 2022-09-21 22:46:47 · 472 阅读 · 0 评论 -
判断出栈序列是否合法
思路:将1~n入栈,在入栈的过程中检测入栈元素是否等于出栈序列当前元素, 那么就让栈顶元素出栈,同时将序列当前元素位置标记向后移动一位; 只要栈顶元素等于当前序列元素,继续出栈。#include<bits/stdc++.h>using namespace std;const int maxn = 100;stack<int> st; int arr[maxn]; // 存储待判断的序列int main() { int m, n, T; // m栈容量.原创 2021-02-08 12:10:14 · 519 阅读 · 0 评论 -
459. 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。虽然是个简单题,但是很值得学习。 方法一:枚举法,该方法技巧很值得学习 假设字符串S = n*s 若s 长度 i ,当 j 指向一个元素时那么只需要对比:S[ j ] ?= S[ j-i]; i 从1 开始遍历,,当 i > strlen(s) / 2 时---->可以提前结束啦!(小优化) 还有一个小优化:若 N = strle...原创 2020-08-24 18:52:47 · 147 阅读 · 0 评论 -
201. 数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。这题解法让我惊叹,竟然如此简洁优美!! 二整数与运算,0&0 = 0; 0&1 = 0; 1&0 = 0; 1&1 = 1; 0与任何数与运算均为0,因此二个整数只有对应位全1 进行与运算结果才是1。法一 移位--寻找公共前缀int rangeBitwiseAnd(int m, in...原创 2020-08-23 18:45:28 · 159 阅读 · 0 评论 -
529. 扫雷游戏
地雷周边八个方向如何表示? 可以使用偏移量表示int xShift[] = {-1,-1,-1,0,0,1,1,1}; // 偏移量表示int yShift[] = {-1,0,1,-1,1,-1,0,1};如何统计周围地雷个数?/* 统计周边地雷的个数 */ int sum = 0; int k, x, y; for (k = 0; k < 8; k++) { x = i + xShift[k]; // 偏移量 y...原创 2020-08-20 17:29:49 · 168 阅读 · 0 评论 -
647.回文子串--中心拓展
中心拓展算法枚举所有可能的回文中心,就考虑字符串是奇数还是偶数?可以分奇数,偶数二次循环枚举: int l = i, r = i // 奇数个字符,回文中心为单个字符。l = r 然后向二个方向扩展对比while(s[l] >=0 && s[r] < n && s[l--] == s[r++]) ans++;int l = i, r = i // 偶数个字符,回文中心为二个字符。l = i, r = i+1 然后向二个方向扩展对比w...原创 2020-08-19 21:30:23 · 184 阅读 · 0 评论 -
快慢指针 查找链表的中位结点
具体地,设当前链表的左端点为left,右端点 right,包含关系为[左闭右开),即 left 包含在链表中而right 不包含在链表中。我们希望快速地找出链表的中位数节点mid。为什么要设定「左闭右开」的关系? 由于题目中给定的链表为单向链表,访问后继元素十分容易,但无法直接访问前驱元素。因此在找出链表的中位数节点mid 之后,如果设定「左闭右开」的关系,我们就可以直接用 (left,mid) 以及(mid->next,right) 来表示左右子树对应的列表了。并且,初始的列表也可以用...原创 2020-08-18 13:11:21 · 744 阅读 · 0 评论 -
最大子列和
二次for循环:int Maxsum1(int A[],int N){ int i,j,thissum,maxsum=0; for(i=0;i<N;i++){ thissum=0; for(j=i;j<N;j++){ thissum+=A[j]; if(thissum>maxsum) maxsum=thissum; } } re...原创 2019-03-27 09:47:33 · 91 阅读 · 0 评论 -
C语言结构体创建静态链表
利用结构体变量构建静态的链表:定义结构体来表达链表:#include<stdio.h>struct node{ //node是结点的意思 int data; struct node *next; //结点中有二个数据:data,node类型的next指针 };typedef node Node;使用链表进行赋值,并输出打印:main(){ ...原创 2019-03-23 15:57:27 · 765 阅读 · 0 评论 -
C语言结构体
结构体的定义:使用关键字struct 结构名 { };来定义例如:定义一个学生身份的结构体:#include<stdio.h>#define maxsize 10struct date{ int year,month,day;};struct student{ char name[maxsize]; char ID[maxsize]; int calss;...原创 2019-03-23 14:42:45 · 172 阅读 · 0 评论 -
C语言动态存储分配
c语言动态存储操作三函数:malloc;calloc;freemalloc:///返回的是一个内存地址;void * 动态分配一个存储空间calloc:///返回的同样是一个内存地址; 动态分配多个存储空间代码:malloc#include<stdio.h>#include<stdlib.h>main(){ int *p; p=(int ...原创 2019-03-22 21:13:45 · 1224 阅读 · 0 评论