Reach a Number 到達終點數字
在一根無限長的數軸上,你站在0
的位置。終點在target
的位置。
每次你可以選擇向左或向右移動。第 n 次移動(從 1 開始),可以走 n 步。
返回到達終點需要的最小移動次數。
示例 1:
輸入: target = 3 輸出: 2 解釋: 第一次移動,從 0 到 1 。 第二次移動,從 1 到 3 。
示例 2:
輸入: target = 2 輸出: 3 解釋: 第一次移動,從 0 到 1 。 第二次移動,從 1 到 -1 。 第三次移動,從 -1 到 2 。
注意:
target
是在[-10^9, 10^9]
範圍中的非零整數。
思路:
這道題可以轉化為,給定如下序列+1+2+3+4+...+ k=target,使得滿足條件成立的正負號分佈,即每個數字前可以是正號,也可以是負號,我們分為以下三步走。
第一步:找到最小的k,使得1到k的累加和sum大於等於target
第二步:計算sum和target的差,如果是偶數,那麼把其中一個數前面的符號改為負數即可,因為把第i個數改為負號,所以總和sum減少了2*i
第三步:如果是奇數,那麼就一直加,直到差是偶數,這時肯定可以通過改變數字前面的符號為符號得到target
這裡簡單說明一下:為什麼這樣得到的k一定是最小的,因為第一步是累加所有的和,都是正數累加,保證到達target或者大於target的數k一定是最小的,這時如果等於target,那麼返回k。如果不等於k且差是偶數,也返回k(k也是最小),如果不等於k且差是奇數,最多我們只會加兩個數就可以使得差是偶數,否則通過數學是得不到target的,這樣也能保證k最小
參考程式碼:
class Solution {
public:
int reachNumber(int target) {
target = abs(target);
int index = 1,sum=1;
while (sum < target) {
index++;
sum += index;
}
while ((sum - target) % 2 != 0) {
index++;
sum += index;
}
return index;
}
};
相關文章
- Python Number(數字)Python
- HTML input number 數字控制元件HTML控制元件
- OOM的起點到終點OOM
- LeetCode65. Valid Number — 判斷合法數字LeetCode
- LeetCode-129-求根節點到葉節點數字之和LeetCode
- 129 - 求根到葉子節點數字之和 - PythonPython
- leetcode129. 求根到葉子節點數字之和LeetCode
- leetcode第九題Palindrome Number 驗證迴文數字LeetCode
- Python - 基本資料型別_Number 數字、bool 布林、complex 複數Python資料型別
- Perfect Number 完美數
- 【轉載】JS Number型別數字位數及IEEE754標準JS型別
- 【LeetCode】每日一題129:求根到葉子節點數字之和LeetCode每日一題
- dfs列印有向圖的起點到終點路徑
- vue中自定義指令,限制input值為number和小數點的位數Vue
- 數字,小數點正則,一段話提取數字
- 預計2028年全球數字銀行市場規模達到7226億美元
- “智慧+”的終極版圖:數字孿生世界
- IAB:2017年全球數字廣告市場達到880億美元 同比增長21%
- 數字藏品年終總結:從長坡厚雪到無人問津,潮起潮落的2022
- GfK:預測2019年12月德國消費者信心指數達到9.7點
- C語言 DSF (尋求迷宮起點到終點的所有路徑)C語言
- Gartner:到2020年5G物聯網終端裝置將達到350萬臺
- 數字裡的點號和分號
- C# textbox只能輸入數字和小數點C#
- 數字版遊戲,終於能賣二手了?遊戲
- 從產業數字化到數字產業化 PaaS平臺賦能大型企業數字化創新產業
- 數字營銷如何有效觸達消費者?
- 從區塊鏈到數字貨幣之路區塊鏈
- ACEA:REACH汽車工業指南
- 投行數字化轉型方案,達觀智慧文件處理賦能數字投行
- 從終端到雲端,華為雲 828 B2B 企業節加速中小企業數字化
- 埃森哲:2023年信用卡和數字支付交易價值將達到7萬億美元
- 從資料庫到前端,使用 enum 代替 constant number資料庫前端
- javaScript中Number數字型別方法入門JavaScript型別
- 從虛擬到現實:數字孿生與數字樣機的進化之路
- 從物理空間到數字世界,數字孿生打造智慧化基礎設施
- 數字人民幣之外,還有哪些國家正在試點央行數字貨幣?
- 數字孿生掃除智慧城市“盲點”,賦能社會數字發展