1. 程式人生 > >【Leetcode】507. 完美數

【Leetcode】507. 完美數

題目描述:

對於一個 正整數,如果它和除了它自身以外的所有正因子之和相等,我們稱它為“完美數”。

給定一個 正整數 n, 如果他是完美數,返回 True,否則返回 False

示例:

輸入: 28
輸出: True
解釋: 28 = 1 + 2 + 4 + 7 + 14

注意:

輸入的數字 n 不會超過 100,000,000. (1e8)

解題思路:

找因子,注意迴圈截止,i*i就行了,不然會超時。

AC程式碼:

class Solution {
public:
bool checkPerfectNumber(int num) 
{
    if (num == 0||num == 1) return false;
	int sum = 0;
	for (int i = 1; i*i <= num; i++)
	{
		if (num%i == 0)
			sum =sum + i + num/i;
	}
	return sum ==2*num ? true : false;
}
};

相關推薦

Leetcode507. 完美

題目描述: 對於一個 正整數,如果它和除了它自身以外的所有正因子之和相等,我們稱它為“完美數”。 給定一個 正整數 n, 如果他是完美數,返回 True,否則返回 False 示例: 輸入: 28 輸出: True 解釋: 28 = 1 + 2 + 4 + 7 + 1

leetcode507.Perfect Number

log 我們 技術分享 sel span inf break 思路 排除 題目如下: 解題思路:因為n的最大值是1e8,所以暴力計算是不行的。首先,我們可以排除掉素數,因為素數的整數因子只有1和自己本身,所以累加的和肯定是1。對於非素數,我們首先找到它的最小整數因子,例如2

LeetCode求眾

spa def style col majority leet target 其中 出現 給定一個大小為 n 的數組,找到其中的眾數。眾數是指在數組中出現次數大於 ? n/2 ? 的元素。 你可以假設數組是非空的,並且給定的數組總是存在眾數。 class Solution

LeetCode回文

沒有 思考 -i != code string turn for bool class Solution { public: bool isPalindrome(int x) { string str; str=to_string(

LeetCode264. 醜 II

題目連結:https://leetcode-cn.com/problems/ugly-number-ii/description/ 題目描述 編寫一個程式,找出第 n 個醜數。 醜數就是隻包含質因數 2, 3, 5 的正整數。 示例 輸入: n = 10 輸出: 12

LeetCode15 三之和3Sum

給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0? 找出所有滿足條件且不重複的三元組。 注意:答案中不可以包含重複的三元組。 例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4], 滿足

LeetCode 2 兩相加

解題思路: 1 每個節點相加的結果需要一個進位flag,注意置空。 2 以前的思路是當某個連結串列加完之後,再在結果上接上另一個連結串列即可,但是此題存在連續進位問題。 3 所以讓指到結尾的連結串列指標(為null)陪跑即可,即如果null則加0,這樣可以保持程式的一致性。

LeetCode迴文

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴

LeetCode#15三之和(3Sum)

【LeetCode】#15三數之和(3Sum) 題目描述 給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。 注意:答案中不可以包含重複的三元組。 示例 例如, 給

LeetCode633. 平方之和(Sum of Square Numbers)

【 英文練習 | 中文練習 】 題目描述: 給定一個非負整數 c ,你要判斷是否存在兩個整數 a 和 b,c 等於 a 和 b 的平方和。 示例: 輸入: 5 輸出: True 解釋: 1 * 1 + 2 * 2 = 5 解法一: 利用雙指標的思想,需要注意兩個坑點,一

LeetCode167. 兩之和 Ⅱ - 輸入有序陣列(Two Sum II - Input array is sorted)

【 英文練習 | 中文練習 】 題目描述: 給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數,函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 ind

leetcode202.快樂

編寫一個演算法來判斷一個數是不是“快樂數”。 一個“快樂數”定義為:對於一個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是無限迴圈但始終變不到 1。如果可以變為 1,那麼這個數就是快樂數。 示例: 輸入

leetcode有效的獨(Python解答)

題目: 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個

LeetCode18. 四之和

題目描述 給定一個包含 n 個整數的陣列 nums 和一個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a + b + c + d 的值與 target 相等?

LeetCode1. 兩之和

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2

leetCode18_四之和

雙指標法。 class Solution { public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<v

LeetCode306. 累加 結題報告 (C++)

原題地址:https://leetcode-cn.com/problems/additive-number/ 題目描述: 累加數是一個字串,組成它的數字可以形成累加序列。 一個有效的累加序列必須至少包含 3 個數。除了最開始的兩個數以外,字串中的其他數都等於它之前兩個數相加的和。 給

LeetCode445. 兩相加 II

題目描述 給定兩個非空連結串列來代表兩個非負整數。數字最高位位於連結串列開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零

LeetCode263. 醜

題目描述 編寫一個程式判斷給定的數是否為醜數。 醜數就是隻包含質因數 2, 3, 5 的正整數。 示例 輸入: 6 輸出: true 解釋: 6 = 2 × 3 輸入: 14 輸出: false 解釋

LeetCode組-2(628)-組中三個數相乘最大

負數 [] product leet ont 沒有 程序 時間復雜度 array 題目不難: 思路一(排序取兩端) 先排序,最後三個數相乘即可。(很快就想到了,但是沒想全面 [??] ) 缺陷:沒有考慮到有負數的情況,當至少有兩個負數時,需要判斷 最大數乘兩個最小的負數 和