摘要:問題描述求出的整數中出現的次數并算出的整數中出現的次數為此他特別數了一下中包含的數字有因此共出現次但是對于后面問題他就沒轍了。希望你們幫幫他并把問題更加普遍化可以很快的求出任意非負整數區間中出現的次數從到中出現的次數。
問題描述:
求出1~13的整數中1出現的次數,并算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對于后面問題他就沒轍了。ACMer希望你們幫幫他,并把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。
筆記:
public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int count = 0; //最終返回的個數 int i = 1; //當前位數 int cur = 0, before = 0, after = 0; while (n/i != 0){ cur = n%(i*10)/i; //表示當前位上的數字 before = n/(i*10); //表示當前位前的數 after = n%i; //表示當前位后的數字 if (cur == 0){ //當前位0,如31010,百位上為0,(0~30)*100種百位為1的情況 count += before*i; } else if (cur == 1){ //當前位為1,如31110,百位上為1,(0~30)*100+10+1種情況 count += before*i + after+1; } else { //當前位大于1,如31400,百位上大于1,(0~31)*100種情況 count += (before+1)*i; } i *= 10; //每次循環計算一位上出現1的情況 } return count; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74985.html
摘要:二維數組中的查找在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。解法有兩種,一種是遞歸法,一種是迭代法但是遞歸法計算的時間復雜度是以的指數的方式遞增的,如果面試中千萬不要用遞歸法,一定要用迭代法。 二維數組中的查找 在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和...
摘要:問題描述輸入一個整數,輸出該數二進制表示中的個數。其中負數用補碼表示。思路方法將二進制變成字符數組,遍歷數組統計的個數,這種辦法不需要考慮正負數。遍歷字符數組,統計的個數判斷該位是否是,如果是就,否則執行下一次循環。的二進制表示想右移一位。 1.問題描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。 2.思路 方法1:將二進制變成字符數組,遍歷數組統計1的個數,這...
摘要:劍指在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹并返回。其中負數用補碼表示。 本文為8月牛客網《劍指 offer》刷題做得,現整理出來作為參考。雖然是算法題,但本文用 JavaScript 編寫,看了《劍指 offer》以后發現很多問題處理的過程并不是最好的,所以本文僅供參考。以前全部代碼 A...
閱讀 3582·2021-09-24 09:48
閱讀 1105·2021-09-10 10:51
閱讀 3285·2019-08-30 13:03
閱讀 3333·2019-08-30 12:51
閱讀 1400·2019-08-30 11:22
閱讀 1074·2019-08-29 18:38
閱讀 2046·2019-08-29 16:41
閱讀 3219·2019-08-29 15:32