![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣热点
sunny_daily
java、数据结构、leetcode、企业数字化转型!在线免费接需求!!!
展开
-
39-组合的总和
给定一个无重复元素的正整数数组candidates和一个正整数target,找出candidates中所有可以使数字和为目标数target的唯一组合。candidates中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为target 的唯一组合数少于 150 个。如输入: candidates = [2,3,6,7], target = 7,输出: [[7],[2,2,3]];如输入: candidates = [2...原创 2021-10-20 15:52:54 · 56 阅读 · 0 评论 -
34-在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。要求时间复杂度为O(log n) 。输入:nums = [5,7,7,8,8,10], target = 8,输出:[3,4] 时间复杂度为O(log n),则需要使用二分查找算法,这里其实是二分查找算法的一个变种。二分查找不复杂,复杂的就是细节,什么时候该写小于号、什么时候该写等于号......。...原创 2021-09-30 15:08:16 · 71 阅读 · 0 评论 -
33-搜索旋转排序数组
整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标从0开始计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为[4,5,6,7,0,1,2] 。给你旋转后的数组 nums 和一个整...原创 2021-09-29 19:03:39 · 98 阅读 · 0 评论 -
31-下一个排列
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。输入:nums = [1,2,3],输出:[1,3,2] 输入[1,2,3],则1,2,3三个元素构成的数组为[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1],则下一个元素为[1,3,2]。具体解析过程看代码注释...原创 2021-09-29 18:06:06 · 57 阅读 · 0 评论 -
21-合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。如输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]。 一般先维护一个头节点,这样可以省掉单独判断输入的两个链表是否为空。package likouhot;import leecodeOff.ListNode;/* * 21.合并两个有序链表 */public class Demo21 { public...原创 2021-09-28 18:53:23 · 72 阅读 · 0 评论 -
20-有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 括号这种问题有点抽象,参考了下标准答案给出代码。package likouhot;import java.util.HashMap;import java.util.Map;import java.util.Stack;/* * 20.有效的括号 */public class...原创 2021-09-28 14:18:34 · 71 阅读 · 0 评论 -
19-删除链表的第n个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5] 如果只做一次扫描解不出来。不管用双指针还是栈都不止遍历一次。采用栈的方式,思路很好理解,就是对链表做一次遍历并入栈,然后做出栈,找到第n个栈元素,则该节点即为需要删除的节点。需要用一个额外的栈来存储。一种思路就是双指针,在对链表进行操作时,一般都先在链表的头部维护一个虚拟节点。双指针算法中需要先...原创 2021-09-27 10:46:36 · 475 阅读 · 0 评论 -
17-电话号码的组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。输入:digits = "23";输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 要求解字母组合,则是从每一个按键中找到选出一个元素,如果要求输出的字母数量就很好求,但这里要的是输出字母,所以比较麻烦。假设入如为23两个按键,输出字母则为从2中选一个字符,从3中再选...原创 2021-09-26 17:34:01 · 82 阅读 · 0 评论 -
2-两数相加
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。如输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1]。 解题过程中需要注意两点:1.进位,如果两数相加,则进1;2.如果有一个链表先遍历结束之后持续遍历的问题。package ...原创 2021-09-26 15:54:46 · 62 阅读 · 0 评论 -
11-盛最多水的容器
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。如输入:[1,8,6,2,5,4,8,3,7] 输出:49 相当于是给定一个数组,从数组中选出两个点,计算两个点之间的面积大小。第一步计算初始值的时候肯定是左边选第一个节点、右边选最后一个节点,假设给定的数组height长度...原创 2021-09-23 16:53:04 · 82 阅读 · 0 评论