![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
金石不渝
帮做毕设作品,出shou比赛作品,作品项目完整,文档齐全。有意者私聊。
展开
-
1800. 最大升序子数组和
1800. 最大升序子数组和最大升序子数组和给你一个正整数组成的数组 nums ,返回 nums 中一个 升序 子数组的最大可能元素和。子数组是数组中的一个连续数字序列。已知子数组 [numsl, numsl+1, …, numsr-1, numsr] ,若对所有 i(l <= i < r),numsi < numsi+1 都成立,则称这一子数组为 升序 子数组。注意,大小为 1 的子数组也视作 升序 子数组。示例 1:输入:nums = [10,20,30,5,10,50原创 2021-03-22 20:43:45 · 137 阅读 · 1 评论 -
119. 杨辉三角 II
杨辉三角 II给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:力扣链接:https://leetcode-cn.com/problems/pascals-triangle-ii/class Solution { public List<Integer> getRow(int rowIndex) { List<List<Integer>> C = new Arr..原创 2021-04-14 11:32:45 · 51 阅读 · 0 评论 -
14. 最长公共前缀
14. 最长公共前缀最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英原创 2021-04-14 11:14:37 · 83 阅读 · 0 评论 -
13. 罗马数字转整数
罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V +.原创 2021-04-14 10:35:30 · 56 阅读 · 0 评论 -
27. 移除元素
27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任原创 2021-04-13 16:28:59 · 148 阅读 · 0 评论 -
88. 合并两个有序数组
88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:nums原创 2021-04-13 16:02:56 · 51 阅读 · 0 评论 -
加一
66. 加一给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]提示:1 <=原创 2021-04-13 15:41:03 · 59 阅读 · 0 评论 -
二维矩阵将零所在的行列清空
二维矩阵将零所在的行列清空题意:将零所在的行列清空;思路:定义两个两个数组,分别是列和行数组,进行双重for遍历,找到为0,两个数组进行记录,、最新再进行双重for循环,判断行数组或者列数组是否有等于1,如果有则将改行该列变为1;package _3多维数和矩阵;/* * 题意:将零所在的行列清空; * *思路:定义两个两个数组,分别是列和行数组,进行双重for遍历,找到为0,两个数组进行记录,、 *最新再进行双重for循环,判断行数组或者列数组是否有等于1,如果有则将改行该列变为1;原创 2021-04-11 17:04:03 · 271 阅读 · 3 评论 -
连续子序列最大累加和
连续子序列最大累加和// 求和最大的连续子数组,有可能不唯一,返回一个即可//什么是字数组:子数组就是 一个连续的 可为一个,可为多个解题思路:初始化两个存储最大值变量,开始进行for循环,如果第一个元素小于0,重新赋予给最大值,如果大于零则,则进行累加起来,最后进行两个存储最大值变量比较。package _3多维数和矩阵;// 求和最大的连续子数组,有可能不唯一,返回一个即可//什么是字数组:子数组就是 一个连续的 可为一个,可为多个public class d返回子数组的最大累加和 {原创 2021-04-11 16:35:32 · 415 阅读 · 0 评论 -
1006. 笨阶乘
1006. 笨阶乘笨阶乘通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。例如,factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1。相反,我们设计了一个笨阶乘 clumsy:在整数的递减序列中,我们以一个固定顺序的操作符序列来依次替换原有的乘法操作符:乘法(*),除法(/),加法(+)和减法(-)。例如,clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1。然而,这些运算仍然使原创 2021-04-01 22:11:23 · 65 阅读 · 0 评论 -
191. 位1的个数
191. 位1的个数位1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。示例 1:输入:原创 2021-03-22 20:23:40 · 68 阅读 · 0 评论 -
1047. 删除字符串中的所有相邻重复项
1047. 删除字符串中的所有相邻重复项删除字符串中的所有相邻重复项给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执原创 2020-12-20 12:16:09 · 89 阅读 · 1 评论 -
203. 移除链表元素
203. 移除链表元素移除链表元素删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5package 期末;/* * 删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5原创 2020-12-20 00:09:15 · 74 阅读 · 1 评论 -
a509fib斐波那契数
a509fib斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1.示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1原创 2020-12-19 23:57:09 · 99 阅读 · 1 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
剑指 Offer 10- II. 青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1package 期末;/* * 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。原创 2020-12-19 23:39:50 · 58 阅读 · 1 评论 -
104. 二叉树的最大深度
104. 二叉树的最大深度二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7package 期末;public class a104二叉树的最大深度 { public class TreeNode { int val; TreeNode left;原创 2020-12-19 23:30:04 · 51 阅读 · 1 评论 -
1491. 去掉最低工资和最高工资后的工资平均值
1491. 去掉最低工资和最高工资后的工资平均值给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。示例 1:输入:salary = [4000,3000,1000,2000]输出:2500.00000解释:最低工资和最高工资分别是 1000 和 4000 。去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500示例 2:输入:salary = [1原创 2020-12-19 22:10:26 · 96 阅读 · 1 评论 -
1528. 重新排列字符串
1528. 重新排列字符串重新排列字符串给你一个字符串 s 和一个 长度相同 的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。示例 1:输入:s = “codeleet”, indices = [4,5,6,7,0,2,1,3]输出:“leetcode”解释:如图所示,“codeleet” 重新排列后变为 “leetcode” 。示例 2:输入:s = “abc”, indices = [原创 2020-12-19 21:48:15 · 103 阅读 · 1 评论 -
350. 两个数组的交集 II
350. 两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]方法一:哈希表由于同一个数字在两个数组中都可能出现多次,因此需要用哈希表存储每个数字出现的次数。对于一个数字,其在交集中出现的次数等于该数字在两个数组中出现次数的最小值。首先遍历第一个数组,并在哈希表中记录第一个数组中原创 2020-12-19 20:40:25 · 138 阅读 · 1 评论 -
20. 有效的括号
20. 有效的括号有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true原创 2020-12-18 22:09:03 · 60 阅读 · 1 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
剑指 Offer 53 - I. 在排序数组中查找数字 I、剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0思路:hashmap统计数加判断package 期末;import java.util.HashMap;import java.util.Map原创 2020-12-18 22:06:31 · 55 阅读 · 1 评论 -
977. 有序数组的平方
977. 有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]package 期末;import java.util.Arrays;/* * 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组, * 要求也按非递减顺序排序。示例 1:输入:[-4原创 2020-12-18 21:41:25 · 64 阅读 · 1 评论 -
35. 搜索插入位置
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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思路:用到的是二分查找class Solution { public int searchIns原创 2020-12-18 21:12:54 · 62 阅读 · 1 评论 -
389. 找不同|每日一题
389. 找不同|每日一题给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例 2:输入:s = “”, t = “y”输出:“y”示例 3:输入:s = “a”, t = “aa”输出:“a”示例 4:输入:s = “ae”, t = “aea”输出:“a”自己写的pac原创 2020-12-18 20:12:01 · 164 阅读 · 1 评论 -
5620. 连接连续二进制数字
5620. 连接连续二进制数字给你一个整数 n ,请你将 1 到 n 的二进制表示连接起来,并返回连接结果对应的 十进制 数字对 109 + 7 取余的结果。示例 1:输入:n = 1输出:1解释:二进制的 “1” 对应着十进制的 1 。示例 2:输入:n = 3输出:27解释:二进制下,1,2 和 3 分别对应 “1” ,“10” 和 “11” 。将它们依次连接,我们得到 “11011” ,对应着十进制的 27 。示例 3:输入:n = 12输出:505379714解释:连接结原创 2020-12-06 19:47:16 · 245 阅读 · 0 评论 -
5618. K 和数对的最大数目
5618. K 和数对的最大数目给你一个整数数组 nums 和一个整数 k 。每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。返回你可以对数组执行的最大操作数。示例 1:输入:nums = [1,2,3,4], k = 5输出:2解释:开始时 nums = [1,2,3,4]:移出 1 和 4 ,之后 nums = [2,3]移出 2 和 3 ,之后 nums = []不再有和为 5 的数对,因此最多执行 2 次操作。示例 2:输入:nums = [3,1原创 2020-12-06 19:45:38 · 283 阅读 · 0 评论 -
5617. 设计 Goal 解析器
5617. 设计 Goal 解析器显示英文描述通过的用户数2441尝试过的用户数2459用户总通过次数2458用户总提交次数2678题目难度Easy请你设计一个可以解释字符串 command 的 Goal 解析器 。command 由 “G”、"()" 和/或 “(al)” 按某种顺序组成。Goal 解析器会将 “G” 解释为字符串 “G”、"()" 解释为字符串 “o” ,"(al)" 解释为字符串 “al” 。然后,按原顺序将经解释得到的字符串连接成一个字符串。给你字符串 command原创 2020-12-06 11:03:10 · 213 阅读 · 0 评论 -
118. 杨辉三角
118. 杨辉三角杨辉三角给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]package 每日一题;import java.util.ArrayList;import java.util.List;/* * 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨原创 2020-12-06 09:55:53 · 74 阅读 · 1 评论 -
剑指 Offer 53 - II. 0~n-1中缺失的数字
剑指 Offer 53 - II. 0~n-1中缺失的数字剑指 Offer 53 - II. 0~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8class Solution { public int missingNumber(int[]原创 2020-12-05 12:09:22 · 84 阅读 · 0 评论 -
剑指 Offer 58 - II. 左旋转字符串
剑指 Offer 58 - II. 左旋转字符串剑指 Offer 58 - II. 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”package原创 2020-12-05 11:54:43 · 220 阅读 · 4 评论 -
Offer50第一个只出现一次的字符
Offer50第一个只出现一次的字符、剑指 Offer 50. 第一个只出现一次的字符在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = “abaccdeff”返回 “b”s = “”返回 " "class Solution { public char firstUniqChar(String s) { HashMap<Character, Boolean>map =new HashMap<Character,原创 2020-12-05 11:43:20 · 69 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序
剑指 Offer 58 - I. 翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符原创 2020-12-05 11:09:32 · 54 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
剑指 Offer 30. 包含min函数的栈(双栈实现弹出最小值)定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();min原创 2020-12-05 10:52:36 · 1714 阅读 · 5 评论 -
剑指 Offer 29. 顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。class Solution { public int[] spiralOrder(int[][] matrix) { //处理边界 if(matrix==null||matrix.length==0||matrix[0].length==0){ return new int[0]; } //处理方向 int rows=matrix.length,columns =mat原创 2020-12-05 10:34:20 · 66 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
标题剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。class Solution { public int maxSubArray(int[] nums) { int res = nums[0]; for(int i = 1; i < nums.length; i++) { nums[i] += Math.max(nums[i原创 2020-12-05 09:44:40 · 52 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
标题剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。package 剑指;/* * 剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 */public class Offer42连续子数组的最大和 { public int maxSubArray(int[] nums) {原创 2020-12-04 11:57:53 · 62 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面剑指 Offer 21. 调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。class Solution { public int[] exchange(int[] nums) { int i=0,j=nums.length-1,tem; while(i<j) { while(i<j&&(nums[i]&原创 2020-12-04 11:45:23 · 63 阅读 · 0 评论 -
剑指 Offer 57. 和为s的两个数字
剑指 Offer 57. 和为s的两个数字package 剑指;/* * 剑指 Offer 57. 和为s的两个数字输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 */public class Offer57和为s的两个数字 { //超时了(注意读题在递增数组) public int[] twoSum(int[] nums, int target) { int[]v =new int[2]; for(原创 2020-12-04 11:17:05 · 70 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数
剑指 Offer 40. 最小的k个数import java.util.Arrays;class Solution { public int[] getLeastNumbers(int[] arr, int k) { Arrays.sort(arr); int arrs[]=new int[k]; for(int i=0;i<k;i++) { arrs[i]=arr[i]; } return arrs;原创 2020-12-04 10:58:16 · 56 阅读 · 0 评论 -
数组中出现次数超过一半的数字
标题数组中出现次数超过一半的数字package 剑指;import java.util.HashMap;import java.util.Map;/* * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 */public class Offer39数组中出现次数超过一半的数字 { public static Map<Integer,Integer> majorityElement(int[] num原创 2020-12-04 10:30:59 · 61 阅读 · 2 评论