日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【LeetCode笔记】剑指 Offer 44. 数字序列中某一位的数字(Java、偏数学)

發(fā)布時間:2024/7/23 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】剑指 Offer 44. 数字序列中某一位的数字(Java、偏数学) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 題目描述
  • 思路 && 代碼

題目描述

  • 比較偏數(shù)學(xué)的一道題。。眾所周知這類題代碼量都不大,但是就是難想= =

思路 && 代碼

  • 這篇題解寫得很好~
  • 建議還是直接看上面的題解(結(jié)合圖更好理解),這邊我只是寫上一點自己的筆記
  • 主要分為三個步驟:尋找對應(yīng)數(shù)字的位數(shù)、尋找對應(yīng)數(shù)字、尋找對應(yīng)數(shù)字的最終位
  • 步驟一:通過公式 count = 9 * digit * start 來循環(huán)尋找
  • 步驟二:(n - 1) 是因為要向下取,結(jié)合計算機中除法直接向下取整的特性
  • 步驟三:(n - 1) 是因為數(shù)字的首位為第 0位
  • 總的來說,感覺是挺偏數(shù)學(xué)規(guī)律的一道題。。
class Solution {public int findNthDigit(int n) {// 0. init// 位數(shù)int digit = 1;// 當前位數(shù)對應(yīng)最小值,比如 1 - 0, 2 - 10, 3 - 100long start = 1;// 當前位數(shù)存儲的所有值的位數(shù)和: count = 9 * digit * startlong count = 9;// 1. 尋找 digitwhile(n > count) {n -= count;digit++;start *= 10;count = digit * start * 9;}// 2. 找到對應(yīng)的數(shù)字,比如 199:所求數(shù)字在 start 的后 (n - 1) / digit 位long num = start + (n - 1) / digit;// 3. 找到對應(yīng)數(shù)字的最終位return Long.toString(num).charAt((n - 1) % digit) - '0';} }

總結(jié)

以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 44. 数字序列中某一位的数字(Java、偏数学)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。