![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
(刘*牛)
这个作者很懒,什么都没留下…
展开
-
474. 一和零
leetcode-474. 一和零原创 2022-11-02 22:52:26 · 261 阅读 · 1 评论 -
416. 分割等和子集
leetcode-416. 分割等和子集原创 2022-11-01 08:01:47 · 125 阅读 · 0 评论 -
491. 递增子序列
491. 递增子序列-leetcode原创 2022-10-21 08:01:13 · 145 阅读 · 0 评论 -
64. 最小路径和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-path-sum著作原创 2021-06-04 08:15:49 · 72 阅读 · 0 评论 -
62. 不同路径---动态规划
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向下 -> 向下向下 -> 向下 -> 向右向下 -> 向右 ->原创 2021-05-28 08:06:25 · 155 阅读 · 0 评论 -
最大子序和
题目描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系原创 2020-07-22 15:57:21 · 112 阅读 · 0 评论 -
100. 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2 2 [1,2], [1,null,2]输出: false示例 3:输入:原创 2020-07-20 22:06:59 · 74 阅读 · 0 评论 -
外观数列
给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:111211211111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1 ” ,记作 21描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记作 1211描述前一项,原创 2020-07-09 21:02:06 · 91 阅读 · 0 评论 -
搜索插入位置
题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search原创 2020-07-08 20:40:29 · 145 阅读 · 0 评论 -
字符串转换整数 (atoi)
题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个原创 2020-06-15 20:58:44 · 123 阅读 · 0 评论 -
删除排序数组中的重复项
题目描述:题目没有多少难度,是一道简单题,但是主要是两种算法的提交结果对比出现的差异,让人觉得好的算法在效率方面的提升是相当了不起的,下面依次介绍解法一:普通的思想就是通过循环,将后面不同的代码通过顺序移动以后,就可以将所有的数字移动到前端,从而实现解法具体实现如下:int removeDuplicates(int* nums, int numsSize){ if (nums == NULL) { return 0; } if ((numsSize == 1原创 2020-06-10 15:31:22 · 164 阅读 · 0 评论 -
Z 字形变换
题目描述:解题思路:思路一:使用一个二维数组,然后按照题目要求计算每一个字符的位置放到二维数组中,然后按照要求按行遍历二维数组,输出对应的字符串即可思路二:通过观察上面给出的两个例子,可以进行行数的扩展,对行数为2,5,6,7进行计算以后,总结以后的规律如下:对于任意整数i,有:1)对于Z字形的二维数组的第一行,对应的字符在 s 中的下标是 i * (2 * k - 2)2) 对于Z字形的二维数组的最后一行,对应的字符在s中的下标是 i * (2 * k - 2)+ k - 13) 对于原创 2020-06-09 17:28:26 · 450 阅读 · 0 评论 -
最长回文子串
题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:暴力解法思路:把字原创 2020-06-09 15:29:32 · 73 阅读 · 0 评论 -
滑动窗口使用题目
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。来源:力扣(Le原创 2020-05-30 11:36:39 · 120 阅读 · 0 评论 -
有效的括号
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true来源:力扣(LeetC原创 2020-05-30 08:55:58 · 104 阅读 · 0 评论 -
两数相加 ---- 链表表示
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807来源:力扣(LeetCode)链接:https://leet原创 2020-05-29 11:13:30 · 126 阅读 · 0 评论 -
回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-n原创 2020-05-29 09:16:04 · 97 阅读 · 0 评论 -
整数反转
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-integer原创 2020-05-29 08:45:07 · 116 阅读 · 0 评论 -
排序算法
一 直接插入排序1、算法思想每次将一个待排序的记录按其关键码的大小插入到一个已经排好序的队列中,知道全部记录排好序。2、算法思想图解3、算法排序过程示例4、代码实现算法实现时间复杂度位O(n * n),该算法是一种稳定的算法。 // 直接插入排序.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespac原创 2020-05-27 15:24:06 · 150 阅读 · 1 评论 -
132模式
给定一个整数序列:a1, a2, …, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。注意:n 的值小于15000。示例1:输入: [1, 2, 3, 4]输出: False解释: 序列中不存在132模式的子序...原创 2020-02-09 11:34:45 · 1062 阅读 · 0 评论 -
搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(Le...原创 2020-02-02 20:47:27 · 71 阅读 · 0 评论 -
删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...原创 2019-12-27 07:21:47 · 47 阅读 · 0 评论 -
罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...转载 2019-12-23 07:17:45 · 63 阅读 · 0 评论 -
计算字符串最后一个单词的长度,单词以空格隔开
题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。示例1输入复制hello world输出复制5#include <stdio.h>#include <string.h>#define MAX_LENGTH 5001int main(){char in...原创 2019-12-19 07:23:21 · 357 阅读 · 0 评论 -
合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作权归领扣网...原创 2019-12-01 22:14:21 · 51 阅读 · 0 评论 -
有效括号匹配
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses著作权归领扣网络所有。商业转载请联系官方授...原创 2019-12-01 21:08:57 · 197 阅读 · 0 评论 -
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。题目实现如下所示:char * longestCommonPrefix(char ** strs, int strsSize){if ((strs == NULL) || (strsSize <= 0)) {char* tmpStr = (char*)malloc(1);tmpStr[0] = ...原创 2019-11-17 17:38:59 · 864 阅读 · 0 评论 -
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。求解如下:bo...原创 2019-11-16 20:45:33 · 860 阅读 · 0 评论 -
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。关键在于如何处理溢出,其余都比较容易解答:#define MIN -2147483648#define MAX 2147483647int reverse(in...原创 2019-11-16 15:49:31 · 164 阅读 · 0 评论