leetcode306. 累加數(回溯)

累加數是一個字符串,組成它的數字可以形成累加序列。

一個有效的累加序列必須至少包含 3 個數。除了最開始的兩個數以外,字符串中的其他數都等于它之前兩個數相加的和。

給定一個只包含數字 ‘0’-‘9’ 的字符串,編寫一個算法來判斷給定輸入是否是累加數。

說明: 累加序列里的數不會以 0 開頭,所以不會出現 1, 2, 03 或者 1, 02, 3 的情況。

示例 1:

輸入: “112358”
輸出: true
解釋: 累加序列為: 1, 1, 2, 3, 5, 8 。1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8

解題思路

字符串實現大數相加,保證了不會溢出

代碼

class Solution {boolean isa=false;public boolean isAdditiveNumber(String num) {additiveNumber(num,0,new ArrayList<>());return isa;}public String  sadd(String num1,String num2) {//字符串相加int carry=0;int n=num1.length()-1,m=num2.length()-1;StringBuilder strijavangBuilder=new StringBuilder();while (n>=0||m>=0||carry>0){int o1=n>=0?num1.charAt(n)-'0':0;int o2=m>=0?num2.charAt(m)-'0':0;stringBuilder.append((char)((carry+o1+o2)%10+'0'));carry=(carry+o1+o2)>=10?1:0;n--;m--;}return stringBuilder.reverse().toString();}public void additiveNumber(String num,int pos,List<String> temp) {if(pos==num.length())//遍歷到了末尾{if(temp.size()>=3)isa=true;return ;}for(int len=1;len+pos<=num.length();len++){if(isa) break;String s=num.substring(pos,pos+len);if(s.length()>1&&s.charAt(0)=='0') continue;if(temp.size()>=2){if(sadd(temp.get(temp.size()-1),temp.get(temp.size()-2)).equals(s))//判斷是否相等{temp.add(s);additiveNumber(num, pos+len, temp);temp.remove(temp.size()-1);//回溯}}else{//不夠3個數就直接加進去temp.add(s);additiveNumber(num, pos+len, temp);temp.remove(temp.size()-1);}}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393892.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Typescript和React的最佳實踐

by Christopher Diggins克里斯托弗迪金斯(Christopher Diggins) 使用Typescript和React的最佳實踐 (Best practices for using Typescript with React) There are numerous tools and tutorials to help developers start writing simple React applications with TypeScript.…

LeetCode || Copy List with Random Pointer

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null. Return a deep copy of the list. 思路1&#xff1a;最傻瓜的方法是首先遍歷一次建立next關系的新list。然后第二次遍歷處理random關系…

oracle存儲過程多分支怎樣寫,如何從存儲過程返回多行? (Oracle PL / SQL)

如何從存儲過程返回多行&#xff1f; (Oracle PL / SQL)我想用一個參數創建一個存儲過程&#xff0c;該存儲過程將根據參數返回不同的記錄集。 這是怎么做的&#xff1f; 我可以從普通SQL中調用它嗎&#xff1f;5個解決方案65 votes這是如何構建一個函數&#xff0c;該函數返回…

京東布局消費物聯網 聚合產業鏈共建生態

據Gartner發布的數據顯示&#xff0c;到2020年&#xff0c;全球聯網設備數量將達260億臺&#xff0c;物聯網市場規模將達1.9萬億美元。如今&#xff0c;互聯網已經從人與人的連接發展到人與物、物與物的連接&#xff0c;物聯網時代帶來。 5月9日&#xff0c;京東聚合三大運營商…

xshell監聽端口_監聽端口修改_笨辦法學Linux 遠程訪問 (原理、實踐、記錄與排錯)-視頻課程_Linux視頻-51CTO學院...

聰明人下笨功夫。本課程所倡導“笨辦法”的核心是&#xff1a;● 深入理解原理● 精讀man幫助、官方文檔…● 做所有的實驗&#xff0c;盡量不要復制粘貼&#xff01;● 詳細記錄實驗過程● 使用思維導圖等輔助工具● 享受排錯的過程&#xff0c;在尋求幫助之前先嘗試自己解決本…

leetcode632. 最小區間(堆+多指針)

你有 k 個升序排列的整數數組。找到一個最小區間&#xff0c;使得 k 個列表中的每個列表至少有一個數包含在其中。 我們定義如果 b-a < d-c 或者在 b-a d-c 時 a < c&#xff0c;則區間 [a,b] 比 [c,d] 小。 示例 1: 輸入:[[4,10,15,24,26], [0,9,12,20], [5,18,22,3…

【SLAM】安裝 g2o_viewer

2017年2月8日&#xff0c;那是一個陰天。為了完成高翔博士的《一起做RGB-D SLAM》教程&#xff0c;我在 Ubuntu 14.04 安裝 g2o。遇到困難&#xff0c;怎奈我眼瞎&#xff0c;找錯了方向&#xff0c;浪費時間&#xff0c;沒有成功安裝。 問題如下&#xff08;跳到最后一個問題描…

CSS動畫快速介紹

Interested in learning CSS? Get my CSS Handbook 有興趣學習CSS嗎&#xff1f; 獲取我的CSS手冊 介紹 (Introduction) An animation is applied to an element using the animation property.使用animation屬性將動畫應用于元素。 .container { animation: spin 10s linear…

2_sat

要求字典序的情況的話&#xff0c;爆搜 不要求的話 1:建圖&#xff0c;有向邊A--->B的意義為選擇A則必須選擇B&#xff0c;一般一個點的兩種取值情況會拆點。 2:縮點。 3:建反向圖&#xff0c;跑拓撲排序&#xff08;有說不用建再跑&#xff0c;但我不懂為什么&#xff09;。…

[Spark][Python]Spark 訪問 mysql , 生成 dataframe 的例子:

[Spark][Python]Spark 訪問 mysql , 生成 dataframe 的例子&#xff1a; mydf001sqlContext.read.format("jdbc").option("url","jdbc:mysql://localhost/loudacre")\ .option("dbtable","accounts").option("user&quo…

ffmpeg mac 批量腳本_使用批處理腳本(BAT)調用FFMPEG批量編碼視頻

使用批處理腳本(BAT)編碼視頻非常方便&#xff0c;尤其當視頻序列非常多的時候&#xff0c;更是省了不少簡單重復性勞動。只要學會批處理里面幾個基本的命令就行了&#xff0c;感覺和c/c差不多。set&#xff1a;設置變量(注意&#xff1a;變量一般情況下是字符串&#xff0c;而…

單實例oracle ha,Oracle單實例啟動多個實例

Oracle單實例啟動多個實例多實例運行&#xff0c;單個實例就是一個數據庫&#xff01;一個數據庫對應多個實例是RAC。Linux建立oracle的實例步驟&#xff1a;1、在linux服務器的圖形界面下&#xff0c;打開一個終端&#xff0c;輸入如下的命令&#xff1b; xhost ###遠程調用…

leetcode357. 計算各個位數不同的數字個數(回溯)

給定一個非負整數 n&#xff0c;計算各位數字都不同的數字 x 的個數&#xff0c;其中 0 ≤ x < 10n 。示例:輸入: 2 輸出: 91 解釋: 答案應為除去 11,22,33,44,55,66,77,88,99 外&#xff0c;在 [0,100) 區間內的所有數字。代碼 class Solution {int numbers0;public int …

Shell編程 之 for 循環

1. 語法結構 2. 案例 2.1 批量解壓縮 #!/bin/bashcd /root/test/ ls *.tar.gz > ls.log ls *.tgz >> ls.logfor i in $( cat ls.log )dotar -zxf $i &> /dev/nulldone rm -rf ls.log ~ …

react實戰課程_在使用React一年后,我學到的最重要的課程

react實戰課程by Tomas Eglinskas由Tomas Eglinskas 在使用React一年后&#xff0c;我學到的最重要的課程 (The most important lessons I’ve learned after a year of working with React) Starting out with a new technology can be quite troublesome. You usually find …

化工原理物性參數_化工原理知識點總結整理

1一、流體力學及其輸送1.單元操作&#xff1a;物理化學變化的單個操作過程&#xff0c;如過濾、蒸餾、萃取。2.四個基本概念&#xff1a;物料衡算、能量衡算、平衡關系、過程速率。3.牛頓粘性定律&#xff1a;FτAμAdu/dy&#xff0c;(F&#xff1a;剪應力&#xff1b;A&#…

leetcode1415. 長度為 n 的開心字符串中字典序第 k 小的字符串(回溯)

一個 「開心字符串」定義為&#xff1a;僅包含小寫字母 [a, b, c]. 對所有在 1 到 s.length - 1 之間的 i &#xff0c;滿足 s[i] ! s[i 1] &#xff08;字符串的下標從 1 開始&#xff09;。 比方說&#xff0c;字符串 "abc"&#xff0c;"ac"&#xff0c…

8、linux上安裝hbase

1.基本信息 版本1.2.4安裝機器三臺機器賬號hadoop源路徑/opt/software/hbase-1.2.4-bin.tar.gz目標路徑/opt/hbase -> /opt/hbase-1.2.4依賴關系無2.安裝過程 1).使用hadoop賬號解壓到/opt/hadoop目錄下并設置軟連接&#xff1a; [rootbgs-5p173-wangwenting opt]# su hadoo…

c oracle 記錄,ORACLE 19c 操作相關記錄

#數據源導出導入#導出exp oracle/oraclelocalhost:1521/orcl file/home/oracle/dmp/oracle20191120.dmp owneroracle log/home/oracle/dmp/log.log#導入imp oracletest/oracletestlocalhost:1521/orcl file/home/oracle/dmp/oracle20191120.dmp fully ignorey log/home/oracle…

TensorFlow.js快速入門

by Pau Pavn通過保羅帕文(PauPavn) TensorFlow.js快速入門 (A quick introduction to TensorFlow.js) TensorFlow has been around for a while now. Until last month, though, it was only available for Python and a few other programming languages, like C and Java. A…