匯總區間算法(leetcode第228題)

題目描述:

給定一個  無重復元素 的 有序 整數數組 nums 。返回 恰好覆蓋數組中所有數字 的 最小有序 區間范圍列表 。也就是說,nums 的每個元素都恰好被某個區間范圍所覆蓋,并且不存在屬于某個范圍但不屬于 nums 的數字 x 。列表中的每個區間范圍 [a,b] 應該按如下格式輸出:"a->b" ,如果 a != b
"a" ,如果 a == b示例 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 按升序排列

算法:

思路:

兩個變量(雙指針)標記高低位,判斷高低位是否相同,來判斷是否要加"->"

使用sprintf格式化存入字符串所在地址(方便整數轉字符串)

代碼實現:
# include<stdio.h>
# include<string.h>
# include<stdlib.h>char** summaryRanges(int* nums, int numsSize, int* returnSize) {char** ret = (char **)malloc(sizeof(char*) * numsSize);*returnSize = 0;//返回字符串長度int i = 0;while (i < numsSize) {int low = i;//低位i++;while (i < numsSize && nums[i] == nums[i - 1] + 1) {i++;}int high = i - 1;//高位char* temp = (char *)malloc(sizeof(char) * 25);sprintf(temp, "%d", nums[low]);//打印首數字if (low < high) {//高低位不一致-->有區間-->打印箭頭sprintf(temp + strlen(temp), "->");//在temp + strlen(temp)存儲->sprintf(temp + strlen(temp), "%d", nums[high]);//在temp + strlen(temp)存儲尾數字}//多維ret[(*returnSize)++] = temp;//逐行保存}return ret;
}

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

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

相關文章

財務機器人(RPA)會影響會計人員從業嗎?

財務機器人會對會計從業人員有影響。 不過是正面積極的影響。 它是財務人員工作的好助手好幫手。 具體展開聊聊財務RPA機器人是如何成為財務人員的好幫手。 財務機器人是在人工智能和自動化技術的基礎上建立的、以軟件機器人作為虛擬勞動力、依據預先設定的程序與現有用戶系…

活用異常處理(try-except)

介紹 簡要介紹Python的異常處理&#xff08;try-except&#xff09;。 基本語法 Try-except是Python中異常處理的基礎。 作為例子&#xff0c;我們將解釋執行除零時發生 ZeroDivisionError 的情況。 當除以零時&#xff0c;會出現以下錯誤。 print(1 / 0) # ZeroDivisionE…

藍牙配對、連接和刪除匯總

目的&#xff1a;處理PC連接藍牙設備的配對、連接和刪除操作&#xff0c;以及常見故障。 命令行配對藍牙設備并連接 要求&#xff1a;配對BLUET043藍牙&#xff0c;密碼為4444&#xff0c;然后連接該藍牙。操作步驟如下&#xff1a; Step1.下載 修復工具&#xff0c;然后安裝…

利用python編寫簡易POC腳本

POC&#xff1a;概念證明&#xff0c;即概念驗證&#xff08;英語&#xff1a;Proof of concept&#xff0c;簡稱POC&#xff09;是對某些想法的一個較短而不完整的實現&#xff0c;以證明其可行性&#xff0c;示范其原理&#xff0c;其目的是為了驗證一些概念或理論。 聲明&a…

三哥的黑科技,印度發布無線加熱服裝專利,冬季神器要來了

眾所周知風和自由在冬天是不存在的&#xff0c;冬天只剩下冰冷的像刀子一樣的風刮在你的臉上&#xff0c;哪怕穿的很厚&#xff0c;戴上全盔&#xff0c;也無法阻擋冰冷的風帶走你身體溫度&#xff0c;如果穿的特別多&#xff0c;騎車時候的舒適感和穿脫衣物的繁瑣也是一大頭疼…

【MySQL系列】Centos安裝MySQL

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

vim常用鍵位總結

1、移動光標 按鍵作用h或←光標向左移動一個字符j或↓光標向下移動一個字符k或↑光標向上移動一個字符l或→光標向右移動一個字符Ctrl f或Page Down屏幕向下移動一頁&#xff08;常用&#xff09;Ctrl b或Page Up屏幕向上移動一頁&#xff08;常用&#xff09;Ctrl d屏幕向…

Kafka使用總結

1、Kafka是何如做到高性能的&#xff1f; a、消息批處理減少網絡通信開銷&#xff0c;提升系統吞吐能力&#xff08;先攢一波&#xff0c;消息以“批”為單位進行處理&#xff09; 生產端&#xff1a;無論是同步發送還是異步發送&#xff0c;Kafka都不會立即就把這條消息發送出…

【C++】算法庫(復制操作、交換操作、變換操作)

C算法庫 文章目錄 C算法庫復制操作copy , copy_ifcopy_ncopy_backward 交換操作swapswap_rangesiter_swap 變換操作transformreplacereplace_copy replace_copy_if 算法庫提供大量用途的函數&#xff08;例如查找、排序、計數、操作&#xff09;&#xff0c;它們在元素范圍上操…

java--StringBuilder、StringBuffer、StringJoiner

1.StringBuilder ①StringBuilder代表可變字符串對象&#xff0c;相當于是一個容器&#xff0c;它里面裝的字符串是可以改變的&#xff0c;就是用來操作字符串的。 ②好處&#xff1a;StringBuilder比String更適合做字符串的修改操作&#xff0c;效率會比更高&#xff0c;代碼…

Java入門:EditPlus的安裝與配置講解

1. 前言 Java是一種面向對象的編程語言&#xff0c;廣泛應用于各種平臺和設備。在Java開發過程中&#xff0c;一個好的集成開發環境&#xff08;IDE&#xff09;是非常重要的。EditPlus是一款簡單易用的文本編輯器&#xff0c;它提供了一些方便的功能來支持Java開發。本文將介…

【開源】基于JAVA的木馬文件檢測系統

項目編號&#xff1a; S 041 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S041&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S041&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 木馬分類模塊2.3 木…

Leo贈書活動-13期 【以企業架構為中心的SABOE數字化轉型五環法】文末送書

Leo贈書活動-13期 【以企業架構為中心的SABOE數字化轉型五環法】文末送書 ?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客…

記錄 | xshell輸出錯亂解決

輸出錯亂問題&#xff1a; 解決方法&#xff1a;

VS Code使用 CMake 或 Makefile管理C++多文件編譯

VS Code使用 CMake 或 Makefile管理C多文件編譯 一、Cmake方式1、文件結構2、構建項目 二、Makefile方式1、文件結構2、Makefile3、構建項目 三、附件示例中使用到的文件及代碼 使用 CMake 或 Makefile 是更加標準和靈活的方法來管理多文件編譯。以下是一個簡單的示例&#xff…

80個常用shell命令及簡單用法

Shell命令是Linux和Unix系統中的基礎&#xff0c;用于完成各種操作&#xff0c;如文件管理、程序執行、文本處理等。下面列舉一些常用的Shell命令&#xff0c;并詳細解釋它們的功能及應用場景&#xff1a; ls - 列出目錄內容 功能&#xff1a;列出指定目錄中的文件和目錄。應用…

智能優化算法應用:基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.郊狼算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

Mybatis增刪改查基礎

MyBatis可根據查詢的結果類型、查詢條件的不同進行統一處理。 1 查詢數據 1.1 根據查詢數據條數來分析不同的情況 1.1.1 查詢單條數據 可以通過實體類、list集合、map等處理查詢結果。 通過實體類查詢單條數據 User queryUserById(Param("id") Integer id);<…

C、C++、C#的區別概述

C、C、C#的區別概述 https://link.zhihu.com/?targethttps%3A//csharp-station.com/understanding-the-differences-between-c-c-and-c/文章翻譯源于此鏈接 01、C語言 ? Dennis Ritchie在1972年創造了C語言并在1978年公布。Ritchie設計C的初衷是用于開發新版本的Unix。在那之…