這道題一開始想了個辦法,但是錯了,錯在假設其他數字都是不變的,一直向乙個數字加,直到湊到其中乙個目標最小數字。。。
看了題解才知道,這道題是可以逆操作的。因為是其他所有數字加到乙個數字上,所以最大的數字肯定是剛操作的數字。只要反操作一下。
值得注意的是需要優化,不然會超時,乙個最大的數字,假設是a+other_sum,如果a還是最大的數字(通過a大於other_sum來判斷,如果大於other_sum,肯定大於其他數字),那麼a還是可以再拆,a=b+other_sum,所以綜合起來,max_num= c + k*other_sum,,其中c>=1,是乙個整數,所以我們可以直接減去k*other_sum,相當於逆操作的多次。至於怎麼求k,我們注意到c是乙個正數,c>=1 && c < other_sum,所以k*other_sum這部分最大是 max_num-1,然後用(max_num-1)/other_sum,這裡減一是因為如果max_num整除other_sum,那新的數字就是0了。
class solution
while(q.top()!=1)
int add_time=(max_num-1)/other_sum;
if(max_num-add_time*other_sum<1)
return false;
q.push(max_num-add_time*other_sum);
sum-=other_sum*add_time;
}return true;
}};
leetcode多次搜尋
1.字典樹 對small建trie樹,其中每個樹節點的isword記錄對於的其在smalls中的陣列下標 對字串big,遍歷其所有字尾,對於從i big.size 1的字尾,設為prefix,在trie樹中進行查詢,遍歷prefix,當出現乙個字元的isword 1時,表示從prefix 0 pre...
POJ 1696 Space Ant 多次求凸包
題意 有乙隻類似於螞蟻之類的動物,由於 他的身體缺陷只可以左轉不可右轉,每天他它都要吃乙個植物才可以活下去,如果沒有食物可以吃了他就死,給你植物的座標你要求的就是問他怎麼選擇吃食物的順序才可以使自己活得長久。最開始他的座標在 0,y y是所有節點中縱座標的最小值,所以第乙個食物我i們直著走過去不用轉...
LeetCode實戰 求眾數
you may assume that the array is non empty and the majority element always exist in the array.example 1 input 3 2,3 output 3example 2 input 2 2,1 1,1 ...