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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer:12-17记录

發(fā)布時(shí)間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer:12-17记录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

請(qǐng)?jiān)O(shè)計(jì)一個(gè)函數(shù),用來判斷在一個(gè)矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動(dòng)一格。如果一條路徑經(jīng)過了矩陣的某一格,那么該路徑不能再次進(jìn)入該格子。例如,在下面的3×4的矩陣中包含一條字符串“bfce”的路徑(路徑中的字母用加粗標(biāo)出)。

[["a","b","c","e"],
["s","f","c","s"],
["a","d","e","e"]]

但矩陣中不包含字符串“abfb”的路徑,因?yàn)樽址牡谝粋€(gè)字符b占據(jù)了矩陣中的第一行第二個(gè)格子之后,路徑不能再次進(jìn)入這個(gè)格子。

?

示例 1:

輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
輸出:true
示例 2:

輸入:board = [["a","b"],["c","d"]], word = "abcd"
輸出:false
提示:

1 <= board.length <= 200
1 <= board[i].length <= 200

dfs

/* 思路: 主方法:對(duì)每個(gè)點(diǎn)dfs dfs方法:1、結(jié)束條件 2、記錄并做標(biāo)記 3、嘗試周圍 4、回溯,恢復(fù)原樣 5、返回值 */ class Solution {char[] words;char[][] board;public boolean exist(char[][] board, String word) {this.board=board;words = word.toCharArray();for(int i = 0; i < board.length; i++) {for(int j = 0; j < board[0].length; j++) {if(dfs(i, j, 0)) return true;}}return false;}boolean dfs(int i, int j, int k) {if(i >= board.length || i < 0 || j >= board[0].length || j < 0 || board[i][j] != words[k]) return false;if(k == words.length - 1) return true;char tmp = board[i][j];board[i][j] = '/';boolean res = dfs(i + 1, j, k + 1) || dfs(i - 1, j, k + 1) || dfs(i, j + 1, k + 1) || dfs(i , j - 1, k + 1);board[i][j] = tmp;return res;} }

給你一根長度為 n 的繩子,請(qǐng)把繩子剪成整數(shù)長度的 m 段(m、n都是整數(shù),n>1并且m>1),每段繩子的長度記為 k[0],k[1]...k[m] 。請(qǐng)問 k[0]*k[1]*...*k[m] 可能的最大乘積是多少?例如,當(dāng)繩子的長度是8時(shí),我們把它剪成長度分別為2、3、3的三段,此時(shí)得到的最大乘積是18。

示例 1:

輸入: 2
輸出: 1
解釋: 2 = 1 + 1, 1 × 1 = 1
示例?2:

輸入: 10
輸出: 36
解釋: 10 = 3 + 3 + 4, 3 ×?3 ×?4 = 36
提示:

2 <= n <= 58

leetcode343. 整數(shù)拆分

class Solution {public int cuttingRope(int n) {int[] dp = new int[n + 1];dp[1]=1;for (int i = 2; i <= n; i++)for (int j = 1; j < i; j++)dp[i] = Math.max(dp[i], Math.max(j,dp[j]) * (i - j));return dp[n];} }

給你一根長度為 n 的繩子,請(qǐng)把繩子剪成整數(shù)長度的 m 段(m、n都是整數(shù),n>1并且m>1),每段繩子的長度記為 k[0],k[1]...k[m] 。請(qǐng)問 k[0]*k[1]*...*k[m] 可能的最大乘積是多少?例如,當(dāng)繩子的長度是8時(shí),我們把它剪成長度分別為2、3、3的三段,此時(shí)得到的最大乘積是18。

答案需要取模 1e9+7(1000000007),如計(jì)算初始結(jié)果為:1000000008,請(qǐng)返回 1。

?

示例 1:

輸入: 2
輸出: 1
解釋: 2 = 1 + 1, 1 × 1 = 1
示例?2:

輸入: 10
輸出: 36
解釋: 10 = 3 + 3 + 4, 3 ×?3 ×?4 = 36
?

提示:

2 <= n <= 1000

思路:

和上一題的區(qū)別的數(shù)范圍很大。

動(dòng)態(tài)規(guī)劃不好比較大小,因?yàn)闀?huì)取模。

如果用大數(shù)類,太麻煩,而且失去意義。

我們首先考慮對(duì)于一段長n的繩子,我們可以切出的結(jié)果包含什么?

1會(huì)包含嗎? 不會(huì),因?yàn)? * (k - 1) < k, 只要把1和任何一個(gè)其他的片段組合在一起就有個(gè)更大的值
2可以
3可以
4可以嗎? 它拆成兩個(gè)2的效果和本身一樣,因此也不考慮
5以上可以嗎? 不可以,這些繩子必須拆,因?yàn)榭傆幸环N拆法比不拆更優(yōu),比如拆成 k / 2 和 k - k / 2

綜上, 最后的結(jié)果只包含2和3(當(dāng)然當(dāng)總長度為2和3時(shí)單獨(dú)處理), 那么很顯然n >= 5時(shí), 3*(n - 3) >= 2 * (n - 2) ,因此我們優(yōu)先拆成3,最后剩余的拆成2。最后的結(jié)果一定是由若干個(gè)3和1或2個(gè)2組成.

class Solution {public int cuttingRope(int n) {if(n == 2) {return 1;}if(n == 3){return 2;}int mod = (int)1e9 + 7;long res = 1;while(n > 4) {res *= 3;res %= mod;n -= 3;}return (int)(res * n % mod);} }

請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)整數(shù),輸出該數(shù)二進(jìn)制表示中 1 的個(gè)數(shù)。例如,把 9?表示成二進(jìn)制是 1001,有 2 位是 1。因此,如果輸入 9,則該函數(shù)輸出 2。

示例 1:

輸入:00000000000000000000000000001011
輸出:3
解釋:輸入的二進(jìn)制串 00000000000000000000000000001011?中,共有三位為 '1'。
示例 2:

輸入:00000000000000000000000010000000
輸出:1
解釋:輸入的二進(jìn)制串 00000000000000000000000010000000?中,共有一位為 '1'。
示例 3:

輸入:11111111111111111111111111111101
輸出:31
解釋:輸入的二進(jìn)制串 11111111111111111111111111111101 中,共有 31 位為 '1'。

思路:對(duì)每一位判斷即可。

public class Solution {public int hammingWeight(int n) {int res = 0;while(n != 0) {res += n & 1;n >>>= 1;}return res;} }

實(shí)現(xiàn)函數(shù)double Power(double base, int exponent),求base的exponent次方。不得使用庫函數(shù),同時(shí)不需要考慮大數(shù)問題。

?

示例 1:

輸入: 2.00000, 10
輸出: 1024.00000
示例?2:

輸入: 2.10000, 3
輸出: 9.26100
示例?3:

輸入: 2.00000, -2
輸出: 0.25000
解釋: 2-2 = 1/22 = 1/4 = 0.25
?

說明:

-100.0 <?x?< 100.0
n?是 32 位有符號(hào)整數(shù),其數(shù)值范圍是?[?231,?231?? 1] 。

快速冪

temp是每一位是多少,ans是答案。(注意都是冪關(guān)系,全是乘)

class Solution {public double myPow(double x, int n) {if (n < 0) {x = 1 / x;n = -n;}double ans=1;double temp=x;while(n != 0) {if((n & 1) == 1)ans*=temp;n >>>= 1;temp*=temp;}return ans;} }

輸入數(shù)字 n,按順序打印出從 1 到最大的 n 位十進(jìn)制數(shù)。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數(shù) 999。

示例 1:

輸入: n = 1
輸出: [1,2,3,4,5,6,7,8,9]
?

說明:

用返回一個(gè)整數(shù)列表來代替打印
n 為正整數(shù)

估計(jì)是想考大數(shù)呢。但是無腦直接過了。

class Solution {public int[] printNumbers(int n) {int sum = (int)Math.pow(10,n);int[] num = new int[sum-1];for(int i=0;i<sum-1;i++){num[i] = i+1;}return num;} }

?

總結(jié)

以上是生活随笔為你收集整理的剑指offer:12-17记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 538国产精品一区二区 | 极品久久久久 | 久久久午夜精品福利内容 | 欧美丝袜视频 | 国产一级视频在线 | 人人澡超碰碰97碰碰碰 | 久久综合av | 在线观看免费的av | 一区二区在线观看免费 | 国产免费一区二区 | 一个人看的视频www 色就是色网站 | 亚洲综合激情 | 黄色一级网址 | 在线视频你懂得 | 丝袜制服影音先锋 | 久久久久久久爱 | 久久丁香网 | 国产欧美日韩视频在线观看 | 黄色在线观看免费视频 | 国产成人自拍视频在线 | 中国1级毛片 | 成年性生交大片免费看 | 欧美一卡二卡在线 | 中国少妇高潮 | 中文字幕在线观看亚洲 | 九色蝌蚪9l视频蝌蚪9l视频 | 理论片高清免费理伦片 | 久久精精品久久久久噜噜 | 国产精品乱码一区 | 国产精品国产精品国产专区蜜臀ah | 在线观看黄色av网站 | 好看的av网址 | 一级片一级 | 999久久| 国模少妇一区二区三区 | 手机看片1024欧美 | 欧美xxx在线观看 | 美女视频久久 | 成人在线观看你懂的 | 狠狠艹视频 | 很黄很色的视频 | 伊人网综合视频 | www.爱色av.com | 日韩免费三级 | 久久精品tv | 黄色一级视频 | 国产高清视频在线播放 | 亚洲伦理自拍 | 欧美国产精品一二三 | 久久久三级 | 欧美日韩一区二区三区在线电影 | 一区二区三区不卡在线 | 国产欧美熟妇另类久久久 | 国产一区二区视频在线 | 俺去俺来也在线www色官网 | 亚洲精品国产手机 | 成人福利一区二区三区 | 精品久久人人 | 久久99久久98精品免观看软件 | 日本在线第一页 | 清纯唯美亚洲色图 | 一区二区三区视频在线 | a级性生活视频 | 中文字幕激情 | 91免费黄色 | 久久久久精彩视频 | 久久永久免费 | 69社| 成人一区二区在线观看 | 香港三级日本三级 | 亚洲日本国产精品 | 亚洲手机在线观看 | 亚瑟av在线 | 秋霞毛片少妇激情免费 | 精品三级在线观看 | 欧美日韩国产精品一区 | 麻豆做爰免费观看 | 欧美另类自拍 | 淫片一级国产 | 久久人人爽天天玩人人妻精品 | 亚洲av综合色区无码一二三区 | 欧美精品一区二区久久婷婷 | 日本国产一区二区 | 特黄一区 | 日韩伊人网 | 亚洲一级淫片 | 69日影院 | 成人国产毛片 | xxxx69视频 | 有码在线播放 | 国产精品100 | 波多野结衣视频一区 | 99在线视频精品 | 少妇太紧太爽又黄又硬又爽小说 | 一本色道久久综合亚洲精品图片 | 国产又大又粗又爽的毛片 | 国产精品第100页 | 精产国品一区二区三区 | 在线播放无码后入内射少妇 |