leetcode
文章平均质量分 53
有点甜的农夫山泉
这个作者很懒,什么都没留下…
展开
-
leetcode22题 括号生成 dfs和动态规划
leetcode22题 括号生成题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8解法一(DFS)这道题可以描述成一颗二叉树,然后通筛选掉不合适的结果,返回正确的结果,先看当括原创 2021-11-23 17:18:52 · 4091 阅读 · 0 评论 -
leetcode21题 合并俩个有序的链表(俩种解法)
leetcode21题 合并俩个有序的链表题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l原创 2021-11-12 12:19:45 · 206 阅读 · 0 评论 -
leetcode20题 有效的括号
leetcode20题 有效的括号题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true原创 2021-11-10 16:48:28 · 233 阅读 · 0 评论 -
leetcode19题 删除链表的倒数第N个结点
题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], n = 1 输出:[] 示例 3:输入:head = [1,2], n = 1 输出:[1]提示:链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n原创 2021-11-09 15:07:54 · 413 阅读 · 0 评论 -
leetcode18题 四数之和
题目给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d < n a、b、c 和 d 互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target 你可以按 任意顺序 返回答案 。示例 1:输入:nums原创 2021-11-09 10:36:45 · 4157 阅读 · 0 评论 -
leetcode17题 电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 示例 2:输入:digits = "" 输出:[] 示例 3:输入:digits = "2" 输出:["a","b","c"]提示:0 <= digits.le原创 2021-11-08 14:48:50 · 244 阅读 · 0 评论 -
leetcode16题 最接近的三数之和
题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3 -10^3 <= nums[i] <= 10^3 -1原创 2021-11-05 15:43:48 · 3450 阅读 · 0 评论 -
leetcode15题 三数之和
题目给你一个包含 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 = [] 输出:[] 示例 3:输入:nums = [0] 输出:[]提示:0 <= nums.length <=原创 2021-11-04 16:01:44 · 152 阅读 · 0 评论 -
leetcode14题 最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs = ["flower","flow","flight"] 输出:"fl" 示例 2:输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。提示:1 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i] 仅由小写英文字母组成原创 2021-11-02 16:36:09 · 1254 阅读 · 0 评论 -
leetcode13题 罗马数字转整数
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4原创 2021-11-02 15:44:37 · 105 阅读 · 0 评论 -
leetcode12题 整数转罗马数字
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4原创 2021-11-01 15:45:57 · 141 阅读 · 0 评论 -
leetcode第十一题 盛最多水的容器
解题思路这道题关键是理解一个概念:在每个状态下,无论长板或短板向中间收窄一格,都会导致水槽底边宽度 -1变短: 但是当你将短板那侧向内测移动一位的时候,水槽的面积是有可能增大的,比如看这样一张图,当你将短的那侧的向内移动一位,面积由之前的2 X 4 = 8变为5 X 3 = 15 而当你选择向内移动长的那侧的时候,面积是一定减少的,因为,他长度是受到短板的制约;因此无论你接下来向内移动的那个版有多长,都无关紧要了。 而咱们要找的就是在这几个板中构成最大的闭合空间,因此.原创 2021-10-29 15:33:19 · 122 阅读 · 0 评论 -
leetcode第九题 回文数
题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121 输出:true 示例 2:输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3:输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个原创 2021-10-27 12:46:55 · 112 阅读 · 0 评论 -
leetcode第八题 字符串转换整数
解题思路这道题首先是找条件 去除前置空格 如果遇到全是空格的情况直接返回0即可 判断正负号,这里用一个标记判断一下即可 当正式开始转换的时候,遇到非数字的字符就结束输入 最后就是跟上一道题一样,判断限制,这里不再多说 代码class Solution { public int myAtoi(String s) { int len = s.length(); char[] arrayChar = s.toCharA...原创 2021-10-26 15:37:25 · 106 阅读 · 0 评论 -
leetcode第七题 整数反转
解题思路 将一个数颠倒就是先通过取余拿最小位,然后乘上对应的倍数,然后通过相除去掉最后一位,拿到倒数第二位,依次循环。 找到最大和最小的界限,最大的界限是2,147,483,647,最小的界限是-2,147,483,648。 越界分为俩种情况,第一种是超过最大值,第二种情况是小于最小值。 然后当颠倒算出来的后九位结果已经大于214748364的时候,无论最后一位是什么,注定越界;第二种是当计算出来的后九位与214748364相等的时候,就看最后一位也就是p是否大于7就可以原创 2021-10-26 10:07:28 · 157 阅读 · 0 评论 -
leetcode第六题 Z字形变换
题目将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:s = "PA原创 2021-10-26 10:05:42 · 158 阅读 · 0 评论 -
leetcode第五题 最长回文子串
题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2:输入:s = "cbbd" 输出:"bb" 示例 3:输入:s = "a" 输出:"a" 示例 4:输入:s = "ac" 输出:"a"解题思路先来看别人的一张图按照这种解法,首先想到三种情况 当前位和左边的元素相同 当前位与右边元素相同 当前元素与左边右边都不...原创 2021-10-26 10:00:41 · 369 阅读 · 0 评论 -
leetcode第四题找俩个数组中的中位数
leetcode第四题:找俩个数组中的中位数 题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 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原创 2021-10-21 15:19:06 · 223 阅读 · 0 评论 -
leetcode-3 无重复字符的最长子串
leetcode-3 无重复字符的最长子串题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例: 示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke..原创 2021-08-12 11:10:54 · 284 阅读 · 0 评论 -
LeetCode-2 俩数相加
LeetCode-2 俩数相加题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 1. 输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807 2.输入:l1 = [0], l2 = [0]输出:[0]..原创 2021-07-28 09:41:05 · 98 阅读 · 0 评论 -
leetcode-1 俩数之和
leetcode-1 俩数之和题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路解法一: 为了保证没俩个数都能进行相加,所以通过俩次for循环让第二层的for循环原创 2021-07-27 10:14:32 · 62 阅读 · 0 评论