每日一题算法题
王惠龙
这个作者很懒,什么都没留下…
展开
-
LetCode#21将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
LetCode#21将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路:两个有序的链表,建立一个新的链表,然后定义一个头指针指向这个链表,然后循环遍历,直到有一个链表为空。内部逻辑还是很简单的,就是比较两个链表的内的值比大小,看代码就容易知道了!代码: public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode listNode = new Li原创 2021-11-15 11:21:58 · 1374 阅读 · 0 评论 -
LetCode#83(JAVA)存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。
删除排序链表中的重复元素题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。举例思路:题目中给了链表有序,所有很容易想到从头开始遍历,如果指向的下一个和当前的值相同,就指向下下一个,一次循环,直到最后!代码 public ListNode deleteDuplicates(ListNode head) { if (head == null) { .原创 2021-09-28 18:13:26 · 513 阅读 · 0 评论 -
LetCode#69(JAVA)给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去.
69. Sqrt(x)题目给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sqrtx著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。例子:思路:这题最先想到的是暴力法(习惯了),后来想想这种原创 2021-09-28 17:38:34 · 2248 阅读 · 0 评论 -
LetCode#66(JAVA)给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数存放在数组的首位, 数组中每个元素只存储单个数。
66. 加一题目给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-one著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。举例:思路:其实这题目刚开始就看不懂,我看了好多被人的解释我才明白,所以我就大概就是一下吧,这个原创 2021-09-16 10:46:03 · 466 阅读 · 0 评论 -
LetCode#58(JAVA)给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
58. 最后一个单词的长度题目给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。举例:思路:这题主要考察的就是字符串的相关知识点,其实我第一想到的就是string.split()这个方法,以空格分割,然后把最后一个长度返回就行了,然后第二个办法就是从后往前查到第一个空格结束,返回长度就行了!法一:public int lengthOfLastWord(String s) {try原创 2021-09-15 10:20:32 · 2564 阅读 · 0 评论 -
LetCode#53(JAVA)给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
53. 最大子序和题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。举例思路:最优解其实使用到动态规划,这里动态规划还不是很会,所以就用最暴力的解法,从头遍历到最后,保存最大值,最后输出最大值。代码: public int maxSubArray(int[] nums) { int max=Integer.MIN_VALUE; for (int i = 0; i < nums.length; i原创 2021-09-15 09:50:36 · 1838 阅读 · 0 评论 -
LetCode#35(JAVA)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
35. 搜索插入位置题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-insert-position著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。举例:思路:如果没有要求时间复杂度,这题直接暴力解决就好了,但是有时间复杂度原创 2021-09-14 17:40:38 · 791 阅读 · 0 评论 -
LetCode#28(JAVA)实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置
28. 实现 strStr()题目:实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。来源:力扣(L原创 2021-09-14 17:20:44 · 1457 阅读 · 0 评论 -
LetCode#27(JAVA)给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使
27. 移除元素题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。来源:力扣(LeetCode)链接:https://leetcode-cn原创 2021-09-14 11:15:58 · 379 阅读 · 0 评论 -
LetCode#26(JAVA)给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地
LetCode#26删除有序数组中的重复项题目给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int原创 2021-09-14 10:58:05 · 1064 阅读 · 1 评论 -
LetCode#9一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文JAVA
每天一道一算题,拒绝当懒狗!一起进步!2021年4月4日21:49:28题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出原创 2021-04-05 09:43:06 · 1419 阅读 · 0 评论 -
LetCode#35给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。-JAVA
每天一道算法题,拒绝做懒狗!2021年4月9日12:03:39题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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://l原创 2021-04-09 12:04:14 · 406 阅读 · 0 评论 -
LetCode#14编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ““。-JAVA
每天一道算法题,拒绝做懒狗!2021年4月8日12:57:15题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-comm原创 2021-04-08 12:57:38 · 419 阅读 · 0 评论 -
LetCode#20给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。JAVA
每天一道算法题,拒绝做懒狗!2021年4月7日19:22:30题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “原创 2021-04-07 19:22:50 · 455 阅读 · 0 评论 -
LetCode#13罗马数字转整数-JAVA
每天一道算法题,拒绝做懒狗!2021-4-6 23:01:27题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。原创 2021-04-06 23:01:52 · 62 阅读 · 0 评论 -
LetCode#7给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。JAVA
每天一道算法题,拒绝当懒狗,一起进步题目给你一个 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来源:力扣(LeetCode)链接:https:/原创 2021-04-04 01:28:44 · 2575 阅读 · 1 评论 -
LetCode#1给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。JAVA
从今天起每天坚持一道算法题,拒绝当懒狗,一起进步!2021年4月3日17:34:35题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0,原创 2021-04-03 18:06:59 · 2430 阅读 · 0 评论