LeetCode150道面試經典題-- 匯總區間(簡單)

1.題目

給定一個 ?無重復元素 的?有序 整數數組 nums

返回 恰好覆蓋數組中所有數字最小有序 區間范圍列表?。也就是說,nums 的每個元素都恰好被某個區間范圍所覆蓋,并且不存在屬于某個范圍但不屬于 nums 的數字 x

列表中的每個區間范圍 [a,b] 應該按如下格式輸出:

  • "a->b" ,如果 a != b
  • "a" ,如果 a == b

2.示例

示例 1:

輸入:nums = [0,1,2,4,5,7]
輸出:["0->2","4->5","7"]
解釋:區間范圍是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

?示例 2:

輸入:nums = [0,2,3,4,6,8,9]
輸出:["0","2->4","6","8->9"]
解釋:區間范圍是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"

提示

0 <= nums.length <= 20
-231 <= nums[i] <= 231 - 1
nums 中的所有值都 互不相同
nums 按升序排列

3.思路

首先需要進行判斷數組的內容個數,如果是一個的則直接添加到鏈表后返回,而如果是多個再分情況,先設置一個起始位,然后進行遍歷數組,當數組內容發生跳變即之間的差不為1時候,就將起始位和當前不同的位置放入list中。

4.代碼

LeetCode代碼

class Solution {public List<String> summaryRanges(int[] nums) {int srcIndex= 0;List<String> list = new ArrayList<>();if (nums.length==1){list.add(nums[0]+"");}for (int i=1;i< nums.length;i++){if (nums[i]-1==nums[i-1]){if (i== nums.length-1){list.add(nums[srcIndex]+"->"+nums[i]);}}else {if (srcIndex == i-1){list.add(nums[srcIndex]+"");}else {list.add(nums[srcIndex]+"->"+nums[i-1]);}if (i == nums.length-1){list.add(nums[i]+"");}srcIndex = i;}}return list; }
}

案例詳細代碼

package LeetCode20;import java.util.ArrayList;
import java.util.List;public class javaDemo {public static void main(String[] args) {List<String> list = new ArrayList<>();int nums[] = new int[]{-1};int srcIndex= 0;
//        判斷特殊情況if (nums.length==1){list.add(nums[0]+"");}
//        遍歷數組for (int i=1;i< nums.length;i++){
//            判斷是否發生跳變if (nums[i]-1==nums[i-1] ){if (i== nums.length-1){list.add(nums[srcIndex]+"->"+nums[i]);System.out.println("有序下必定執行");}}else {System.out.println(i);if (srcIndex == i-1){
//                    處理同一數字list.add(nums[srcIndex]+"");}else {list.add(nums[srcIndex]+"->"+nums[i-1]);}
//                最后一個數據無序處理if (i == nums.length-1){list.add(nums[i]+"");}srcIndex = i;}}System.out.println(list);}
}

?會了?試試挑戰下一題!?(^?^●)ノシ (●′?`)?

LeetCode150道面試經典題-- 有效的括號(簡單)_Alphamilk的博客-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38354.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38354.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

紅黑樹(RBTree)

紅黑樹 1. 紅黑樹的概念2. 紅黑樹的性質3. 紅黑樹節點的定義4. 紅黑樹的插入操作5. 紅黑樹與AVL樹的比較 1. 紅黑樹的概念 紅黑樹是一種自平衡二叉查找樹&#xff0c;是在計算機科學中用到的一種數據結構&#xff0c;典型用途是實現關聯數組。它在1972年由魯道夫貝爾發明&…

【前端二次開發框架關于關閉eslint】

前端二次開發框架關于關閉eslint 方法一方法二方法三方法四&#xff1a;以下是若想要關閉項目中的部分代碼時&#xff1a; 方法一 在vue.config.js里面進行配置&#xff1a; module.exports {lintOnSave:false,//是否開啟eslint保存檢測 ,它的有效值為 true || false || err…

會一點stm32,只后是做嵌入式Linux還是轉JAVA?

選擇嵌入式Linux還是轉向JAVA&#xff0c;取決于你的興趣、職業規劃和就業市場的需求。以下是一些考慮因素&#xff1a;興趣和擅長&#xff1a;首先&#xff0c;你應該考慮自己對嵌入式Linux和JAVA的興趣和擅長程度。如果你對嵌入式系統、硬件交互和底層編程更感興趣&#xff0…

GPT-4 如何為我編寫測試

ChatGPT — 每個人都在談論它,每個人都有自己的觀點,玩起來很有趣,但我們不是在這里玩— 我想展示一些實際用途,可以幫助您節省時間并提高效率。 我在本文中使用GPT-4 動機 我們以前都見過這樣的情況——代碼覆蓋率不斷下降的項目——部署起來越來越可怕,而且像朝鮮一樣…

基于C#UI Automation自動化測試

步驟 UI Automation 只適用于&#xff0c;標準的win32和 WPF程序 需要添加對UIAutomationClient、 UIAutomationProvider、 UIAutomationTypes的引用 代碼 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.D…

C++11并發與多線程筆記(2)

C11并發與多線程筆記&#xff08;2&#xff09; 線程啟動、結束&#xff0c;創建線程多法、join&#xff0c;detach 1. 范例演示線程運行的開始1.1 創建一個線程&#xff1a;1.2 join1.3 datch1.4 joinable 2. 其他創建線程的方法2.1 用類 重載了函數調用運算符2.2 lambda表達式…

ubuntu 安裝 python3.9

一、 相關背景 之前在dockerfile里面一直使用的是python3.8&#xff08;忘記為什么選擇這個版本了&#xff09;&#xff0c;想用python3.9&#xff0c;因為覺得3.8有點老了&#xff0c;而且3.9一個重要的feature&#xff0c;是把list作為默認的類型&#xff0c;不需要從typing…

Redis數據結構——Redis簡單動態字符串SDS

定義 眾所周知&#xff0c;Redis是由C語言寫的。 對于字符串類型的數據存儲&#xff0c;Redis并沒有直接使用C語言中的字符串。 而是自己構建了一個結構體&#xff0c;叫做“簡單動態字符串”&#xff0c;簡稱SDS&#xff0c;比C語言中的字符串更加靈活。 SDS的結構體是這樣的…

Python-OpenCV中的圖像處理-視頻分析

Python-OpenCV中的圖像處理-視頻分析 視頻分析Meanshift算法Camshift算法光流 視頻分析 學習使用 Meanshift 和 Camshift 算法在視頻中找到并跟蹤目標對象: Meanshift算法 Meanshift 算法的基本原理是和很簡單的。假設我們有一堆點&#xff08;比如直方 圖反向投影得到的點&…

ASR 語音識別接口封裝和分析

這個文檔主要是介紹一下我自己封裝了 6 家廠商的短語音識別和實時流語音識別接口的一個包&#xff0c;以及對這些接口的一個對比。分別是&#xff0c;阿里&#xff0c;快商通&#xff0c;百度&#xff0c;騰訊&#xff0c;科大&#xff0c;字節。 zxmfke/asrfactory (github.c…

ubuntu 安裝 cuda

ubuntu 安裝 cuda 初環境與設備在官網找安裝方式 本篇文章將介紹ubuntu 安裝 CUDA Toolkit CUDA Toolkit 是由 NVIDIA&#xff08;英偉達&#xff09;公司開發的一個軟件工具包&#xff0c;用于支持并優化 GPU&#xff08;圖形處理器&#xff09;上的并行計算和高性能計算。它…

解析TCP/IP協議的分層模型

了解ISO模型&#xff1a;構建通信的藍圖 為了促進網絡應用的普及&#xff0c;國際標準化組織&#xff08;ISO&#xff09;引入了開放式系統互聯&#xff08;Open System Interconnect&#xff0c;OSI&#xff09;模型。這個模型包括了七個層次&#xff0c;從底層的物理連接到頂…

一、Dubbo 簡介與架構

一、Dubbo 簡介與架構 1.1 應用架構演進過程 單體應用&#xff1a;JEE、MVC分布式應用&#xff1a;SOA、微服務化 1.2 Dubbo 簡介一種分布式 RPC 框架&#xff0c;對專業知識&#xff08;序列化/反序列化、網絡、多線程、設計模式、性能優化等&#xff09;進行了更高層的抽象和…

ArcGIS Maps SDK for JavaScript系列之三:在Vue3中使用ArcGIS API加載三維地球

目錄 SceneView類的常用屬性SceneView類的常用方法vue3中使用SceneView類創建三維地球項目準備引入ArcGIS API創建Vue組件在OnMounted中調用初始化函數initArcGisMap創建Camera對象Camera的常用屬性Camera的常用方法 要在Vue 3中使用ArcGIS API for JavaScript加載和展示三維地…

【JavaSE】面向對象之封裝

封裝的概念 封裝是把過程和數據包圍起來&#xff0c;對數據的訪問只能通過已定義的接口。面向對象計算始于這個基本概念&#xff0c;即現實世界可以被描繪成一系列完全自治、封裝的對象&#xff0c;這些對象通過一個受保護的接口訪問其他對象。封裝是一種信息隱藏技術&#xff…

Java旋轉數組中的最小數字(圖文詳解版)

目錄 1.題目描述 2.題解 分析 具體實現 方法一&#xff08;遍歷&#xff09;&#xff1a; 方法二&#xff08;排序&#xff09;&#xff1a; 方法三&#xff08;二分查找&#xff09;&#xff1a; 1.題目描述 有一個長度為 n 的非降序數組&#xff0c;比如[1,2,3,4,5]&a…

Linux基礎

Linux 一、基礎01- 執行環境準備02- linux的版本分類02.1 內核版本02.2 發行版本02.3 內核和發行版本的區別: 03- 虛擬機安裝04- 啟動linux 二、系統操作05- 幫助命令05.1 man 幫助05.2 help 幫助05.2.1 內部命令05.2.2 外部命令 05.3 info 幫助 06- ls命令06.1 -r06.2 -rt06.3…

npm install 中 --save 和 --save-dev 是什么?

npm&#xff0c;全名 Node Package Manager&#xff0c;套件管理工具&#xff0c;package.json 會記下你在項目中安裝的所有套件。 假設在項目中安裝 lodash npm i --save lodash這樣在 dependencies 中會出現&#xff1a; 如果修改了導入方式&#xff1a; npm i --save-dev …

在Linux中對docker 一鍵安裝,本地安裝,無網絡安裝,

在Linux中對docker 一鍵安裝 前提先準備好安裝包 非常絲滑 首先先把需要準備的文件準備好&#xff0c;/package/base.tar 和 /package/docker-20.10.10.tgz包 這兩個文件包必須放在 /package目錄下 再和/package同級的目錄下再準備conf目錄&#xff0c;conf目錄下放docker.se…

Labview解決“重置VI:xxx.vi”報錯問題

文章目錄 前言一、程序框圖二、前面板三、問題描述四、解決辦法 前言 在程序關閉前面板的時候小概率型出現了 重置VI&#xff1a;xxx.vi 這個報錯&#xff0c;并且發現此時只能通過任務管理器殺掉 LabVIEW 進程才能退出&#xff0c;這里介紹一下解決方法。 一、程序框圖 程序…