![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 50
kkkkkkc1
每天进步一点点
展开
-
2021寒假备赛蓝桥杯期间记录的题解
题解解题者:kc一、题目来源:蓝桥杯题目描述:对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。解题思路:程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作,由于位运算直接对内存数据进行操作,无需转换成十进制,因此使原创 2021-03-14 14:29:24 · 124 阅读 · 0 评论 -
杭电OJ题目分类
模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 ...转载 2021-03-13 15:29:49 · 242 阅读 · 0 评论 -
C语言之位运算技巧
https://blog.csdn.net/znufe_newer/article/details/105162300?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-2&spm=1001.2101.3001.4242原创 2021-01-16 17:16:06 · 244 阅读 · 0 评论 -
力扣初级算法----完整手写题解
力扣初级算法书籍跳转链接. Github下载链接: 力扣初级算法题解pdf版本下载(因为可能上传的csdn文章里面的图片看不太清楚。下载pdf可以看清楚一点). 力扣初级算法----完整手写题解 数组1.删除排序数组中的重复项2.买卖股票的最佳时机 II3.旋转数组4.存在重复元素5.只出现一次的数字6.两个数组的交集 I...转载 2021-01-09 16:08:22 · 422 阅读 · 0 评论 -
步步拆解:如何递归地反转链表的一部分
读完本文,你可以去力扣拿下如下题目:92.反转链表II-----------反转单链表的迭代实现不是一个困难的事情,但是递归实现就有点难度了,如果再加一点难度,让你仅仅反转单链表中的一部分,你是否能够递归实现呢?本文就来由浅入深,step by step 地解决这个问题。如果你还不会递归地反转单链表也没关系,本文会从递归反转整个单链表开始拓展,只要你明白单链表的结构,相信你能够有所收获。// 单链表节点的结构public class ListNode { int val; Lis转载 2020-12-25 16:41:07 · 163 阅读 · 0 评论 -
高频面试系列:字符串乘法
读完本文,你可以去力扣拿下如下题目:43.字符串相乘-----------对于比较小的数字,做运算可以直接使用编程语言提供的运算符,但是如果相乘的两个因数非常大,语言提供的数据类型可能就会溢出。一种替代方案就是,运算数以字符串的形式输入,然后模仿我们小学学习的乘法算术过程计算出结果,并且也用字符串表示。需要注意的是,num1 和 num2 可以非常长,所以不可以把他们直接转成整型然后运算,唯一的思路就是模仿我们手算乘法。比如说我们手算 123 × 45,应该会这样计算:计算 123 × 5,转载 2020-12-19 10:53:46 · 226 阅读 · 1 评论 -
【DP专辑】ACM动态规划总结
动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。 ****************************************************************************************** 动态规划(英语 :Dynamic programming ,DP)是一种在数学、计算机科学和经济学中...转载 2020-12-15 09:29:57 · 185 阅读 · 0 评论 -
基础博弈
一、巴什博奕(Bash Game): 引入问题:有一堆n个物品,两人轮流从堆中取物品,每次取x个(1≤x≤m)。最后取光者为胜。 结论:当n%(m+1)!=0时,先手必胜。 原理:我们可以构造出n=(m+1)*t+s,(0<=s<m+1) 当s!=0时,先取者拿走s个,后取者拿走k个(1<=k<=m),那么先取者再拿走m+1-k个。结果还剩下(m+1)*(t-1)个。我们只要始终给对手留下(m+1)的倍数,那么先取者必胜。当s==0时,那...转载 2020-12-13 20:17:24 · 105 阅读 · 0 评论 -
leetcode59螺旋矩阵II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]解题思路:常规思路可解题int** generateMatrix(int n, int* returnSize, int** returnColumnSizes){ int l=0; int r=n-1; int t=0; int b=n-1; int .原创 2020-10-31 12:30:37 · 81 阅读 · 0 评论 -
leetcode54螺旋矩阵
题目给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]解题思路:常规思路即可破题。int* spiralOrder(in.原创 2020-10-30 10:05:07 · 94 阅读 · 0 评论 -
广度优先算法
一、简介 广度优先搜索算法(Breadth-First Search,BFS)是一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。BFS并不使用经验法则算法。 广度优先搜索让你能够找出两样东西之间的最短距离,不过最短距离的含义有很多!使用广度优先搜索可以: 编写国际跳棋AI,计算最少走多少步就可获胜;编写拼写检查器,计算最...转载 2020-10-26 09:11:20 · 931 阅读 · 0 评论 -
leetcode661图片平滑器
包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[0, 0, 0],[0, 0, 0],[0, 0, 0]]解释:对于点 (0,0), (0,2), (2,0), (2,2): 平均(3/4) = 平均(0.75) = 0对于点 (0,1), (1.原创 2020-10-24 20:22:10 · 151 阅读 · 0 评论 -
leetcode119杨辉三角 II
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]具体思路来自《程序设计基础》吉林大学第二版张长海解读:定义一个k+1大小的数组,在关于j的循环中,运算从数组的倒数第二个数开始,由后往前计算,在改变数值的同时,保证结果的正确。j循环的起始范围刚好隔开了数组的首尾。result[i]=1,也用得很妙。int* getRow(int n, int* returnSize){ in.原创 2020-10-22 09:20:04 · 134 阅读 · 0 评论 -
leetcode118杨辉三角 I
题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]思路:1.创建二维数组result保存结果,返回的数组个数为returnSize=numRows,returnColumnSizes[i]为 i +12.共计创建numRows行,每行第一个和最后一个置为1,从第二行开始有等式 result[i] [.转载 2020-10-20 21:04:57 · 98 阅读 · 0 评论 -
leetcode665非递减数列
题目:给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。这道题可以看做是找向下拐点的过程,如果向下拐点存在,那么你就需要作出改变数字的操作了根据题意,非递减序列可以看做一个非单调的递增序列,那么我们改变向下拐点的方法也就有两种:下移上移如何确定是哪一种,就需要向下拐点的前一个.转载 2020-10-18 19:37:17 · 151 阅读 · 0 评论 -
leetcode453. 最小移动次数使数组元素相等
解法原链接int minMoves(int* nums, int numsSize){ int move=0,min; min=nums[0]; //判断数组元素是否相等,标记数组当前最大数的下标 for(int i=0;i<numsSize;i++) { if(min>=nums[i]) min=nums[i]; } for(int i=0;i<numsSize;i++) move .原创 2020-10-16 17:29:03 · 118 阅读 · 0 评论 -
时间复杂度与空间复杂度看这就够了!
时间复杂度和空间复杂度总结 1.算法效率2.时间复杂度3.空间复杂度 1.算法效率 算法效率分两种,时间效率和空间效率,即时间复杂度和空间复杂度,前者衡量算法运行速度,后者衡量算法所需要的额外空间 2.时间复杂度 2.1基本概念 算法中的时间复杂度是一个函数,定量描述了算法运行时间 总结下来就是:算法种基本操作的执行次数 关注点:操作的数量级/基本操作的执行次数 ①执行时间和硬件资源强相关,不同硬件处理速度有差异 ②CPU每秒钟执行操作在亿级以上 2.2大O的渐进表示法 // 请.转载 2020-10-14 18:32:39 · 91 阅读 · 0 评论 -
刷leetcode遇到的报错及其解决办法(持续更新中)
超出时间限制1.若代码用到排序,可能是算法时间复杂度太高。建议换成时间复杂度低的排序算法。栈内存溢出1.若用到指针,可能是指针越界。建议仔细检查指针的使用有无越界行为。原创 2020-10-10 14:59:28 · 1138 阅读 · 0 评论 -
几种常用排序算法的复杂度
Quicksort:快速排序 Mergesort:归并排序 TimSort : 是一个归并排序做了大量优化的版本。对归并排序排在已经反向排好序的输入时表现O(n^2)的特点做了特别优化。对已经正向排好序的输入减少回溯。对两种情况混合(一会升序,一会降序)的输入处理比较好。 Heapsort:堆排序 Bubble Sort:冒泡排序 Insertion Sort:插入排序 Selection Sort:选择排序 Shell Sort:希尔排序 Bucket Sort:桶排序 Radix...转载 2020-10-10 14:53:55 · 315 阅读 · 0 评论 -
leetcode495提莫攻击
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。示例1:输入: [1,4], 2输出: 4原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。所以最终输出原创 2020-09-28 21:49:08 · 150 阅读 · 0 评论 -
leetcode485最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数。用for写int findMaxConsecutiveOnes(int* nums, int numsSize){ int i,maxnum=0,num=0; for(i=0;i<numsSize;i++) { if(nums[i]) num++; else num=0; if(num>maxnum) .原创 2020-09-26 21:19:00 · 66 阅读 · 0 评论