力扣题
力扣笔记
cc每天都要进步一点点
这个作者很懒,什么都没留下…
展开
-
力扣17. 电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。实例1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]思路:回溯首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作。回溯过程中维护一个字符串,表示已有的字母排列。该字符串初始为空。每次取电话号码的一位数字,从哈...原创 2022-05-08 18:11:13 · 112 阅读 · 0 评论 -
力扣15. 三数之和
题目:给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]思路:排序加双指针要保证枚举的三元组不重复(数字不重复),可以将数组先从小到大排序,在循环时与双指...原创 2022-05-08 16:01:49 · 126 阅读 · 0 评论 -
力扣11. 盛最多水的容器
给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。思路: 双指针左指针从左边开始,右指...原创 2022-05-07 12:29:47 · 61 阅读 · 0 评论 -
力扣5. 最长回文子串
给你一个字符串s,找到s中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"思路: 动态规划边界条件:状态转移方程:P(i,j)=P(i+1,j−1)∧(Si==Sj)class Solution { public String longestPalindrome(String s) { char[] ...原创 2022-05-07 08:59:37 · 59 阅读 · 0 评论 -
力扣4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2...原创 2022-05-07 08:54:50 · 200 阅读 · 0 评论 -
力扣3. 无重复字符的最长子串
给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。思路:滑动窗口存储窗口中的字符以检验字符是否出现过:HashSet窗口左指针:n窗口右指针:r左指针没滑动一次就移出最左边的字符,并持续移动右指针直到右指针下一个字符出现过class Solution { public int lengthOfLonges...原创 2022-05-06 09:12:07 · 91 阅读 · 0 评论 -
力扣2. 两数相加
给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。注意:链表头部就是个位数。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; ...原创 2022-05-03 11:14:59 · 507 阅读 · 0 评论 -
力扣1. 两数之和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。方法一:暴力枚举 时间复杂度:O(N^2),...原创 2022-05-03 10:56:27 · 57 阅读 · 0 评论