T228彙總區間 溢位報錯

2021-10-22 18:47:27 字數 2186 閱讀 8352

給定乙個無重複元素的有序整數陣列 nums 。

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

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

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

"a" ,如果 a == b

輸入:nums = [0,1,2,4,5,7]

輸出:["0->2","4->5","7"]

解釋:區間範圍是:

[0,2] --> "0->2"

[4,5] --> "4->5"

[7,7] --> "7"

定義了兩個數 first,second造成記憶體浪費, if else條件判斷太多 邏輯不清晰。

class solution 

//陣列長度為1是

else if(length==1)

else

else

first=second;

k=i;

}//最後乙個區間的輸出

if(i==length-1)

else}}

}return result;

}

};

1、i作為每個區間下端小標,j作為每個區間右端下標

2、每次迴圈i不動,j++,若nums[j+1]!=nums[j]+1,則[i,j]為乙個區間,i=j+1作為下乙個區間的開頭,若j=length-1,直接輸出最後乙個區間。

3、每個區間用乙個字元變數string str表示

class solution {

public:

vectorsummaryranges(vector& nums) {

int length=nums.size();

vectorres;int i=0;

for(int j=0;j實現2中,若第乙個條件判斷寫為如下形式:if(j==length-1||nums[j+1]-nums[j]!=1),當nums輸入為[-2147483648,-2147483647,2147483647]時,會引發溢位報錯(line 57: char 38: runtime error: signed integer overflow: 2147483647 - -2147483647 cannot be represented in type 'int' (solution.cpp))。因為2147483647-(-2147483647)的值超出int的範圍。所以可用等式判斷時,應盡量避免加減數**算。

to_string();

將其他型別資料轉換成string型。

std::string to_string(int value); (1) (c++11起)

std::string to_string(long value); (2) (c++11起)

std::string to_string(long long value); (3) (c++11起)

std::string to_string(unsigned value); (4) (c++11起)

std::string to_string(unsigned long value); (5) (c++11起)

std::string to_string(unsigned long long value); (6) (c++11起)

std::string to_string(float value); (7) (c++11起)

std::string to_string(double value); (8) (c++11起)

std::string to_string(long double value); (9) (c++11起)

直接新增另乙個完整的字串:

新增另乙個字串的某一段子串:

新增幾個相同的字元:

注意,個數在前字元在後.上面的**意思為在str1後面新增5個".".

push_back();

pop_back() //移除最後乙個元素

clear()  //清空所有元素

empty() //判斷vector是否為空,如果返回true為空

erase() // 刪除指定元素

228 彙總區間

給定乙個無重複元素的有序整數陣列 nums 返回 恰好覆蓋陣列中所有數字 的 最小有序 區間範圍列表。也就是說,nums 的每個元素都恰好被某個區間範圍所覆蓋,並且不存在屬於某個範圍但不屬於 nums 的數字 x 列表中的每個區間範圍 a,b 應該按如下格式輸出 a b 如果 a b a 如果 a ...

leetcode 228 彙總區間

給定乙個無重複元素的有序整數陣列 nums 返回 恰好覆蓋陣列中所有數字 的 最小有序 區間範圍列表。也就是說,nums 的每個元素都恰好被某個區間範圍所覆蓋,並且不存在屬於某個範圍但不屬於 nums 的數字 x 列表中的每個區間範圍 a,b 應該按如下格式輸出 a b 如果 a b a 如果 a ...

228 彙總區間 力扣(LeetCode)

給定乙個無重複元素的有序整數陣列,返回陣列區間範圍的彙總。示例 1 輸入 0,1,2,4,5,7 輸出 0 2 4 5 7 解釋 0,1,2 可組成乙個連續的區間 4,5 可組成乙個連續的區間。示例 2 輸入 0,2,3,4,6,8,9 輸出 0 2 4 6 8 9 解釋 2,3,4 可組成乙個連續...