bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Java怎么計算1到n整數中1出現的次數

本篇內容介紹了“Java怎么計算1到n整數中1出現的次數”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

成都創新互聯公司專注于甘谷網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供甘谷營銷型網站建設,甘谷網站制作、甘谷網頁設計、甘谷網站官網定制、重慶小程序開發公司服務,打造甘谷網絡公司原創品牌,更為您提供甘谷網站排名全網營銷落地服務。

題目介紹

求出1 ~ 13的整數中1出現的次數,并算出100 ~ 1300的整數中1出現的次數?為此他特別數了一下1 ~ 13中包含1的數字有1、10、11、12、13因此共出現6次,但是對于后面問題他就沒轍了。ACMer希望你們幫幫他,并把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。

解題思路

方法一:遞歸每個數字

思路

思路很簡單,寫個for循環,從1到n,在循環體中判斷這個數包含了多少個1

復雜度O(nlogn),面試官不怎么開心呢。。 

方法二:找規律 

思路

設N = abcde,其中abcde分別為十進制中各位上的數字。

如果要計算百位上1出現的次數,它要受到3方面的影響:百位上的數字,百位以下(低位)的數字,百位以上(高位)的數字。

①如果百位上數字為0,百位上可能出現1的次數由更高位決定。比如:12013,則可以知道百位出現1的情況可能是:100 ~ 199,1100 ~ 1199,2100 ~ 2199,,…,11100 ~ 11199,一共1200個。可以看出是由更高位數字(12)決定,并且等于更高位數字(12)乘以 當前位數(100)。

② 如果百位上數字為1,百位上可能出現1的次數不僅受更高位影響還受低位影響。比如:12113,則可以知道百位受高位影響出現的情況是:100 ~ 199,1100 ~ 1199,2100 ~ 2199,,….,11100 ~ 11199,一共1200個。和上面情況一樣,并且等于更高位數字(12)乘以當前位數(100)。但同時它還受低位影響,百位出現1的情況是:12100~12113,一共114個,等于低位數字(113)+1。

③ 如果百位上數字大于1(2 ~ 9),則百位上出現1的情況僅由更高位決定,比如12213,則百位出現1的情況是:100 ~ 199,1100 ~ 1199,2100 ~ 2199,…,11100 ~ 11199,12100 ~ 12199,一共有1300個,并且等于更高位數字+1(12+1)乘以當前位數(100)。 

代碼

public int NumberOf1Between1AndN_Solution(int n) {

    //1的個數
    int count = 0;

    //當前位
    int i = 1;

    int current, after, before;

    while((n/i)!= 0){

        //高位數字
        current = (n/i)%10;
        //當前位數字
        before = n/(i*10);
        //低位數字
        after = n-(n/i)*i;

        //如果為0,出現1的次數由高位決定,數量等于高位數字 * 當前位數
        if (current == 0) {
            count += before * i;
        } else if(current == 1) {
            //如果為1,出現1的次數由高位和低位決定,高位*當前位+低位+1
            count += before * i + after + 1;
        } else{
            //如果大于1,出現1的次數由高位決定,(高位數字+1)* 當前位數
            count += (before + 1) * i;
        }
        //前移一位
        i = i*10;
    }
    return count;
}

“Java怎么計算1到n整數中1出現的次數”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!

網頁名稱:Java怎么計算1到n整數中1出現的次數
當前網址:http://vcdvsql.cn/article12/pdhpgc.html

成都網站建設公司_創新互聯,為您提供網站制作網頁設計公司全網營銷推廣定制網站商城網站網站內鏈

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設