摘要:雙層迭代法復(fù)雜度時間空間思路外層的循環(huán)控制每個的起點(diǎn),內(nèi)層的循環(huán)控制之內(nèi)的遞增。每當(dāng)遍歷完一個,就把它記錄到結(jié)果中,并更新下一個的起點(diǎn)。這里的技巧是,判斷一個數(shù)是否是在內(nèi)的,只要就行了,即值之差等于下標(biāo)之差。
Summary Ranges
雙層迭代法 復(fù)雜度Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].
時間 O(N) 空間 O(N)
思路外層的while循環(huán)控制每個range的起點(diǎn),內(nèi)層的while循環(huán)控制range之內(nèi)的遞增。每當(dāng)遍歷完一個range,就把它記錄到結(jié)果中,并更新下一個range的起點(diǎn)。這里的技巧是,判斷一個數(shù)是否是在range內(nèi)的,只要nums[start + range] - nums[start] = range就行了,即值之差等于下標(biāo)之差。
代碼public class Solution { public ListsummaryRanges(int[] nums) { List res = new LinkedList (); if(nums.length == 0) return res; StringBuilder tmp = new StringBuilder(); int start = 0; while(start < nums.length){ int range = 1; // 遍歷當(dāng)前range內(nèi)的所有數(shù) while(start + range < nums.length && (nums[start + range] - nums[start]) == range){ range++; } // 遍歷完了當(dāng)前range,將其加入結(jié)果中 tmp.append(nums[start]); if(range > 1){ tmp.append("->"); tmp.append(nums[start+range-1]); } res.add(tmp.toString()); tmp = new StringBuilder(); // 更新下一個range的起點(diǎn) start = start + range; } return res; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64553.html
摘要:輸入一個排序好的整數(shù)數(shù)組,輸出數(shù)組中連續(xù)數(shù)字的范圍的數(shù)組這是我的解法,不知道有沒有有更好更快的實(shí)現(xiàn) Given a sorted integer array without duplicates, return the summary of its ranges. For example, given [0,1,2,4,5,7], return [0->2,4->5,7]. 輸入一個排...
摘要:想象一下假設(shè)數(shù)組前有一段連續(xù)的負(fù)無窮到,數(shù)組后有一段到正無窮,這樣是等價與上下界的。最后循環(huán)到停止,當(dāng)下標(biāo)為時,我們將當(dāng)前指針指向,并判斷和數(shù)組末尾是否能構(gòu)成最后一個區(qū)間。 Missing Ranges Given a sorted integer array where the range of elements are [lower, upper] inclusive, retu...
Summary Ranges 題目鏈接:https://leetcode.com/problems... loop兩種寫法: public class Solution { public List summaryRanges(int[] nums) { List result = new ArrayList(); if(nums.length == 0) r...
摘要:接著計(jì)算所有子數(shù)組中元素的和,并判斷是否位于數(shù)值區(qū)間內(nèi)。因此,在對左右子數(shù)組進(jìn)行排序后,以左子數(shù)組中的每一位作為開頭,在右子數(shù)組中找到滿足和區(qū)間的第一個值,和超過區(qū)間的第一個值。則二者的差即為橫穿左右的滿足條件的子數(shù)組個數(shù)。 題目要求 Given an integer array nums, return the number of range sums that lie in [lo...
摘要:而產(chǎn)生這種現(xiàn)象的唯一遠(yuǎn)遠(yuǎn),僅僅是因?yàn)轱w行常客里程數(shù)遠(yuǎn)大于其他特征值。但海倫認(rèn)為這三種特征是同等重要的,因此作為三個等權(quán)重的特征之一,飛行常客里程數(shù)并不應(yīng)該如此嚴(yán)重的影響到計(jì)算結(jié)果。 一、KNN概述 簡單的說,k-近鄰算法采用測量不同特征值之間的距離方法進(jìn)行分類。 優(yōu)點(diǎn):精度高、對異常值不敏感、無數(shù)據(jù)輸入假定 缺點(diǎn):計(jì)算復(fù)雜度高、空間復(fù)雜度高 適用數(shù)據(jù)范圍:數(shù)值型和標(biāo)稱型 1.1 工...
閱讀 1740·2021-11-24 10:18
閱讀 2252·2021-11-18 13:20
閱讀 2343·2021-08-23 09:46
閱讀 1001·2019-08-30 15:56
閱讀 2849·2019-08-30 15:53
閱讀 745·2019-08-30 14:22
閱讀 476·2019-08-29 15:34
閱讀 2542·2019-08-29 12:14