本文主要是介绍一个月速刷leetcodeHOT100 day03,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最长连续序列
// 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。// 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。// 示例 1:// 输入:nums = [100,4,200,1,3,2]// 输出:4// 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。// 示例 2:// 输入:nums = [0,3,7,2,5,8,4,6,0,1]// 输出:9// var longestConsecutive = function (nums) {// if(nums.length === 0){// return 0;// }// nums.sort((a, b) => a - b);// let maxL = 1, curL = 1, curN = nums[0];// for (let i = 1; i < nums.length; i++) {// if (nums[i] === curN) {// continue;// }// if (nums[i] - curN === 1) {// curL++;// } else {// maxL = Math.max(maxL, curL);// curL = 1;// }// curN = nums[i];// }// return Math.max(maxL, curL);// };let fn = function(nums){if(nums.length === 0){return 0}nums.sort((a,b)=>a-b)let curN=nums[0]let curL = 1;for(let i =1;i<nums.length;i++){if(nums[i] === curN){continue}if(nums[i] - curN === 1){curL++}else{maxL = Math.max(maxL, curL); // 更新最长连续序列的长度curL = 1; // 重置当前连续序列的长度}curN = nums[i]}return maxL > curL ? maxL : curL}
287. 寻找重复数
// 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。// 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。// 你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。// 示例 1:// 输入:nums = [1,3,4,2,2]// 输出:2// 示例 2:// 输入:nums = [3,1,3,4,2]// 输出:3// 示例 3 :// 输入:nums = [3,3,3,3,3]// 输出:3//用JS中的查找方法就行var findDuplicate = function(nums){for (let i = 0;i<nums.length;i++) {if (nums.indexOf(nums[i]) !== i) {return nums[i]}}}
这篇关于一个月速刷leetcodeHOT100 day03的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!