1.有問題**
classsolution
if(i == 0)
reverse(nums.begin(), nums.end());
else
}swap(nums[k], nums[i]);
sort(nums.begin()+k+1
, nums.end()); }}
};
問題:這種while()裡面加了個if-else判斷的話,如果處於邊界時,else 語句塊有可能不會執行裡面的有效內容。
方法一:
classsolution
if(i == 0
)
else
swap(nums[k],nums[i
-1]); // 改動之後
sort(nums.begin()+k+1
, nums.end()); }}
};
方法二:
classsolution
}};
解決:把需要一定執行的語句放在while外面,這樣即可解決問題
或 將while和if的判斷語句都寫在while中(如方法二)。前提是else中沒有有效語句
刷題演算法小技巧
1.大數取餘 對於較大數快速取餘 引數 char s 為儲存大數的陣列 modnumber 為mod long long modnumber char s,int modnumber return sum 2.快速冪 極大數 取餘 對於較大數快速取餘 引數 a的b次方 對 c 取餘 long lon...
演算法刷題筆記總結記錄
所有的演算法題第一要義就是要明白題目講什麼,明白規律是什麼,只有知道了規律才能寫 才能輪到使用什麼方法,什麼工具,是用遞迴?還是迴圈?進而才能用到你總結的各種經驗。下面的題目除了動態規劃,其他主要來自劍指offer的題目,而且主要是資料結構題 排序演算法我們單獨整理。1 遞迴模板以及使用技巧總結 2...
減指offer演算法題刷題總結
在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。解題思路 利用hashset去重原理,遍歷新增陣列元素,新增失敗則返回重複元素 class solution re...