演算法 簡單篇

2021-09-24 01:58:46 字數 1287 閱讀 1365

};演算法分析:設n!尾部0的數量的函式為f(n)

易得尾部0的數量由n!中2和5的因數數量決定,因為2的因數很多很多,故只需要考慮有幾個5;

f(1)=0;f(2)=0;f(3)=0;f(4)=0;

f(5)=1…

f(n)=5k*5(k-1)*5(k-2)…5*1*a 其中k,a是正整數,且a不能被5整除

=5^k *a * k!

=5^k * a *f(k)

f(n)=k+f(k);

即f(n)=n/5+f(n/5);

將其轉換為遞迴演算法即可

class solution
但是由於正整數集實在太大,耗費的時間過多,所以只能考慮乙個乙個來生成

通過觀察序列:1,2,3,4,5,6,8,9,10,12…

發現每個數必定是由前面的數乘「2,3或5」乘出來的。但要求從小到大排列,於是考慮到,在第i個數乘2,3,或5之後比較他們的大小,較小的那個存入陣列。該模型可以理解為,以1為根節點,2,3,5為子節點的乙個樹 結構,不過只需要按照從小到大排列即可

失敗嘗試

class solution 

}temp=nums[len-1-j];

nums[len-1-j]=nums[flag];

nums[flag]=temp;

max=0;

}return nums[len-n];}};

這個想法是:遍歷n次,每一次都找出最大的值,並把其位置儲存在flag裡面,把nums[flag]和nums.back() 交換(最大的和最後乙個交換),迴圈n次後輸出倒數第n個即可

但是

當n非常大是,time out

演算法之旅1(簡單篇)

題 給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。預設不能更改原陣列 假設陣列是唯讀的 class solution return 1 主要思路 n 1大小的陣列裡的數字範圍為1 n...

Mybatis學習簡單篇

mybatis配置檔案 configuration propertiesresource resource database.properties environmentsdefault development environmentid development transactionmanager...

Java基礎(簡單篇)

環境配置 classpath 類路徑 找.class檔案 編譯器 資料型別 引用資料型別 變數 變數轉換 string轉int 運算子 比較運算子 instanceof 邏輯運算子 位運算子 移位運算子 條件運算子 賦值運算子 流程控制 while do while for增強 隨機類 靜態建立陣列...