算法刷题
为了学习,我需要不断刷算法编程题!
李奥去哪了
秦人不暇自哀,而后人哀之;后人哀之而不鉴之,亦使后人而复哀后人也。
展开
-
笔试题之字典序
笔试题之字典序题目描述解题思路解题代码(C++)反思题目描述给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。对于n=11, m=4, 按字典序排列依次为1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9, 因此第4个数是2.对于n=200, m=25, 按字典序排列依次为1 10 100 101 102 103 104 105 106 107 108 109 11 110 111 112 113 114 115 116 117 118 119 12 120原创 2020-08-12 19:30:40 · 258 阅读 · 0 评论 -
leetcode刷题之二进制手表
二进制手表题目解题思路代码提交结果反思题目示例:输入: n = 1返回: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"]提示:输出的顺序没有要求。小时不会以零开头,比如 “01:00” 是不允许的,应为 “1:00”。分钟必须由两位数组成,可能会以零开头,比如 “10:2” 是无效的,应为 “10:02”。超过表示范围(小时 0-11,分钟 0-59)的数据将会被舍弃,也就原创 2020-06-18 16:46:28 · 139 阅读 · 0 评论 -
leetcode刷题之最大的以1为边的正方形
最大的以1为边的正方形题目解题思路代码结果题目给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。示例 1:输入:grid = [[1,1,1],[1,0,1],[1,1,1]]输出:9示例 2:输入:grid = [[1,1,0,0]]输出:1解题思路首先想到暴力,直接遍历所有的正方形,然后求出符合要求的最大正方形。从最大正方形边为min(grid.row,grid.col)m原创 2020-05-29 19:39:57 · 218 阅读 · 0 评论 -
leetcode刷题之括号生成
括号生成题目解题思路解题代码结果反思题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]解题思路拿到这个题,首先想到的是怎么插!由于不是计算机科班出身,对回溯法没有什么概念!举个例子讲吧:比如输入的是4,那就是说有四对括号,你要给出原创 2020-05-24 16:50:29 · 182 阅读 · 0 评论 -
leetcode刷题之四数之和
四数之和题目解题思路纯暴力排序+双指针解题代码提交结果反思题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2原创 2020-05-24 12:39:18 · 103 阅读 · 0 评论 -
leetcode刷题之跳跃游戏
跳跃游戏题目解题思路动态规划贪心代码动态规划代码贪心复杂度提交结果DP结果贪心结果总结题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。原创 2020-05-12 17:50:11 · 272 阅读 · 0 评论 -
leetcode刷题之跳跃游戏II
跳跃游戏II题目描述解题思路(1)动态规划(2)直接贪心求解法解题代码(1)动态规划代码直接贪心法代码提交结果(1)动态规划提交结果(2)直接贪心法提交结果总结题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例 :输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组原创 2020-05-10 17:40:46 · 268 阅读 · 0 评论 -
leetcode刷题之合并K个排序链表
合并K个排序链表题目解答思路C++代码提交结果题目合并K个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6解答思路这是我在QQ群看到别人刷到这题,他说这题和算法导论里面的习...原创 2020-05-07 10:42:31 · 122 阅读 · 0 评论 -
leetcode刷题之判定字符是否唯一
判定字符是否唯一题目描述解题思路解题代码提交结果总结题目描述实现一个算法,确定一个字符串s的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false 示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。解题思路这题十分简单,我看完题目之后,马上...原创 2020-04-29 16:13:20 · 259 阅读 · 0 评论 -
leetcode刷题之整数反转
整数反转题目描述解题思路解题代码反思题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数...原创 2019-11-12 15:16:49 · 149 阅读 · 0 评论 -
leetcode刷题之Z字形变换
Z字形变换题目描述解题思路解题代码提交结果总结题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGED...原创 2019-11-11 15:59:22 · 204 阅读 · 0 评论 -
leetcode刷题之最长回文子串
最长回文子串--------题目描述--------解题思路反思--------题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例2:输入: "cbbd"输出: "bb"--------解题思路看到这个题目,我这个菜鸡第一反应是暴力求解。...原创 2019-11-04 15:16:23 · 227 阅读 · 0 评论 -
leetcode刷题之单词替换
单词替换题目描述解题思路解题提交代码反思题目描述在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的...原创 2019-11-02 19:38:56 · 723 阅读 · 0 评论 -
leetcode刷题之无重复字符的最长子串
无重复字符的最长子串题目描述解题思路暴力代码优化代码反思题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例3输入: "pw...原创 2019-10-31 19:48:49 · 274 阅读 · 0 评论