算法刷题
文章平均质量分 61
题目主要来自力扣、剑指Offer、牛客网等。
命名原则:id-题源-知识点-题名
啥也不会的研究牲
这个作者很懒,什么都没留下…
展开
-
011-盛最多水的容器-力扣
盛最多水的容器,暴力算法和双指针算法解决原创 2022-08-12 20:55:15 · 160 阅读 · 0 评论 -
动态规划算法总结
介绍动态规划算法,并于递归算法、递推算法进行比较,介绍0-1背包,完全背包算法以及空间优化原创 2022-06-07 12:06:15 · 2528 阅读 · 0 评论 -
007-整数反转-力扣
整数反转文章目录整数反转一:题目描述二:思路及代码(一):思路(二):代码一:题目描述给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例1:输入:x = 123输出:321示例2:输入:x = -123输出:-321示例3:输入:x = 120输出:21示例4:输入:x = 0输出:0二:原创 2022-01-26 12:23:06 · 423 阅读 · 0 评论 -
006-Z字形变换-力扣
Z字形变换文章目录Z字形变换一:题目描述二:思路及代码(一):思路(二):代码一:题目描述将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。示例1:输入:s = "PAYPALISHIRING",原创 2022-01-24 16:49:06 · 5821 阅读 · 0 评论 -
005-最长回文子串-力扣
最长回文子串文章目录最长回文子串一:题目描述二:思路及代码(一):中心扩散法(二):代码一:题目描述给你一个字符串 s,找到 s 中最长的回文子串。示例一:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例二:输入:s = "cbbd"输出:"bb"示例三:输入:s = "a"输出:"a"示例四:输入:s = "ac"输出:"a"题目来源:最长回文子串二:思路及代码(一):中心扩散法顺序遍历字符串中的每一个字符,每一个字符原创 2022-01-22 15:36:48 · 313 阅读 · 0 评论 -
004-寻找两个正序数组的中位数-力扣
寻找两个正序数组的中位数文章目录寻找两个正序数组的中位数一:题目描述二:思路及代码(一):思路(二):代码一:题目描述给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例2:输入:nums1 = [1,2], nums2 =原创 2022-01-19 10:56:12 · 146 阅读 · 0 评论 -
003-无重复字符得最长子串-力扣
无重复字符得最长字串文章目录无重复字符得最长字串一:题目二:思路以及代码(一):暴力匹配1、解析一:题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例一:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例二:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例三:输入: s = "pwwkew"输出: 3解释: 因为无重复字符原创 2022-01-19 10:20:08 · 227 阅读 · 0 评论 -
002-两数相加-力扣
两数相加文章目录两数相加一:题目描述二:思路三:代码一:题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例2:输入:l1 = [0], l2 = [0]输出:[0]原创 2022-01-16 11:49:07 · 163 阅读 · 0 评论 -
001-两数之和-力扣
两数之和C语言实现题目描述:算法实现:题目描述:力扣算法第一题,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。示例如下:算法实现:int* twoSum(int* nums, int numsSize, int target, int* returnSize){ //先对result进行赋初始值 int* result = NULL; *returnSize = 0;原创 2021-06-29 20:40:27 · 139 阅读 · 0 评论 -
剑指offer-二维数组中的查找
题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:从题目中可以得到,行从左到右递增,列从上到下递减,那么判断一个数字是否在数组中,那这个数字一定比任一行第一个数字要小,如target=5时,5一定在前三行中,因为第四行开头数字是10,所以一定不在第四,五行。同理,数字也一定比任一列第一个数字要小。代码: public static bool原创 2021-03-04 14:46:04 · 142 阅读 · 1 评论 -
剑指offer-数组中的重复数字
题目描述:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例:思路分析:一个数组中在只要遇到一个重复数字就返回该数字,那后面是否还有重复数字不许用考虑。那么遇到重复数字问题,我们可以想到用Set集合,set集合不允许出现重复数字,在使用add()方法对set集合进行添加元素时,如果出现了重复数字,则返回false。根据上面思路,代码如下: public i原创 2021-03-04 14:39:27 · 128 阅读 · 1 评论 -
10.4.变态跳楼梯
变态跳楼梯一:题目描述一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级±… 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。二:解题思路当有1个楼梯时: 青蛙只能从地上跳到第一层楼梯上,因此只有一种跳法当有2个楼梯时: 青蛙可以从地上直接跳到第二层楼梯,也可以从第一层楼梯跳到第二层楼梯,因此共有2种当有3个楼梯时: 青蛙可以从地上直接跳到第三层,也可以先跳到...原创 2020-02-15 17:52:19 · 1947 阅读 · 0 评论 -
10.2.矩形覆盖+跳台阶
矩形覆盖一:题目描述:我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,总共有多少种方法?二:解题思路:通过题目我们可以发现当n变化是会有以下规律:n的值 大矩形的数量n = 1 1n = 2 2n = 3 3n = 4 5...f(n) ...原创 2020-02-15 14:29:41 · 350 阅读 · 0 评论 -
10.斐波那契数列
斐波那契数列一:斐波那契数列简介斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(...原创 2020-02-14 17:24:28 · 680 阅读 · 1 评论 -
9.使用两个栈来实现队列
使用两个栈来实现队列一:题目描述使用两个栈来完成一个队列,实现队列的push操作与pop操作二:题目解析1):栈的特性栈是先进后出,对数据的操作只在一端栈顶进行。2):队列的特性队列是先进先出,可以认为数据是从一端进,从另一端出。题目要求就是使用两个先进后出的栈来实现,先进先出的队列三:思路分析定义两个静态栈变量,一个为in,用来压入数据,另一个为out,用来弹出数据...原创 2020-02-11 19:36:19 · 289 阅读 · 0 评论 -
6、从尾到头打印来单链表
从尾到头打印单链表一:题目描述:一单向链表,从头到尾开始打印结点。如链表1,2,3,4,5;打印出来为5,4,3,2,1二:解决思路:一:使用栈解决因为栈的特性是先进后出,所以正好符合该题目的要求。我们将链表中的数据,一个一个压入栈中,然后在按照顺序,从栈顶向栈底弹出数据。代码: public static void show(LinkedList<Integer>...原创 2020-02-11 14:01:14 · 199 阅读 · 0 评论 -
5、 替换空格
替换空格一:题目描述将一个字符串中的空格替换成 “%20”。Input:"A B"Output:"A%20B"二:解题思路① 在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。因为一个空格要替换成三个字符(%20),所以当遍历到一个空格时,需要在尾部填充两个任意字符。② 令 P1 指向字符串原来的末尾位置,P2 指向字符串现在的末尾位置。P1 和 P2 从后向前遍...原创 2020-02-10 14:28:07 · 151 阅读 · 0 评论 -
4、二维数组中的查找
二维数组中的查找一:题目描述给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中Consider the following matrix:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], ...原创 2020-02-08 19:44:06 · 263 阅读 · 0 评论 -
3、数组中重复的数字
数组中重复的数字一:题目描述:在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。Input:{2, 3, 1, 0, 2, 5}Output:2要求时间复杂度 O(N),空间复杂度 O(1)。二:思路因为要求时间复杂度为O(N),空间复杂度为O(1)...原创 2020-02-08 15:37:57 · 266 阅读 · 0 评论