题目164. 最大间距 这道题目标注的是难题,但是难度不在于解题思路,而在于寻找O(n)的解题方法,常见的O(n)的排序只有几个,可以尝试去写,这里我偷了个懒,直接用Arrays.sort()排序了。最好可以尝试自己去写排序算法。 public int maximumGap(int[] nums) {if (nums.length<2){return 0;}Arrays.sort(nums);int max=0;for (int i = 1; i < nums.length; i++) {int tmp=nums[i]-nums[i-1];if (tmp>max){max=tmp;}}return max; }
415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。提示:num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式 class Solution {public String addStrings(String num1, String num2) {int i = num1.length() - 1, j = num2.length() - 1, add = 0;StringBuffer ans = new StringBu...
boolean isBalanced(TreeNode root) {int res = helper(root);if (res<0) return false;return true;}public int helper(TreeNode root){if (root==null) return 0;//从底下开始判断是否平衡树//两个变量如果是-1就代表是不平衡int ld = helper(root.left);int rd = helper(root.right);//三种情况就不平衡:左右子树不平衡,本节点不平衡if (ld==-1||rd==-1||Math.abs(ld-rd)>1)return -1;else if (ld>rd) return ld+1;else retur...
文章目录 一、引言二、链表的基本操作类题目1.删除链表中的节点2.分隔链表3.交换链表4.旋转链表 三、链表反转类题目解答四、链表双指针类题目解答五、链表数学问题题目解答一、引言 ??链表题目可以归纳为链表的基本操作类题目、反转类题目、双指针问题、数学问题。暂未包括排序类题目,之后会补充。 数据结构与算法python—6.链表及python实现碰到链表类题目,可以画图辅助解答,重点考虑头节点与尾节点是否满足下面介绍一些链表的...
给定两个大小为 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 = 2.5 示例 3:输入:nums1 = [0,0], nums2...
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1:输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2:输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3:输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不...
2. 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1:输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2:输入:l1 = [0], l2 = [0] 输出:[0] 示例 3:输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,...
1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。 示例 1:输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2:输入:nums = [3,2,4], target = 6 输出:[1,2] 示例 3:输入:...
实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。示例 1: 输入:haystack = "hello", needle = "ll" 输...
截止至今LeetCode题目总量已经有1582题,估计将来每年平均增长300题左右,大部分人肯定是刷不完的,所以得有选择地刷LeetCode。一种公认的刷题策略是按类别刷题,可是每个类别也有许多题,在有限的时间里到底该刷哪些题呢?个人根据LeetCode官方给出的每个题目的出现频率,整理并收录了每个类别里高频出现的题目,对于官方统计频率太低的题目,不予收录,最终得到了这个高频题目表格。例如,对于下图中题号#275与#270的题目将被收录...
Cspiration 独家出品此表以先易后难 + 分类而成。Leetcode(https://leetcode.com/)本身并没有顺序, 并且类别分的并不是非常好,因为大量非最优解也涵盖在各种类别中。 所以我们依据做题经验,最优解的类别,难度,重新划分。 如果是第一次刷题的小伙伴,最好以本书的顺序为主,可以为大家节省时间,更有效率的做题,减少很多刷题的负担。数组字符串数学树动态规划链表二分查找矩阵(选学)BFS & DFS图(选学)栈 队列并查集(选...
第二题:简单 两数之和 题目描述解题思路代码暴力破解,时间复杂度O(N ^2)hash表,时间复杂度O(N) 吐槽 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum...
//更新当前的状态 不要漏掉了class MinStack { public:/** initialize your data structure here. */stack<int> temStack;int min=INT_MAX; //当前最小值MinStack() {}void push(int val) {if(val <= min) min = val;temStack.push(min);temStack.push(val); }void pop() {temStack.pop();temStack.pop();if(!temStack.empty()){min = getMin();}else{min = INT_MAX;}}int top() {return temStack.top();}int getMin() {int ...
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [?231, 231 ? 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2:输入:x = -123 输出:-321代码实现: class Solution:"""version 1.0,int>str>list,通过列表的pop/append方法实现反转, list>str>int"""def reverse(self, x: int) -> int:if x >...
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。class TwoSum:"""nums: [int]target: intreturn: two ele's index, [int]"""...