当前位置:网站首页>leetcode842. Split the array into Fibonacci sequences
leetcode842. Split the array into Fibonacci sequences
2022-07-04 10:17:00 【JoesonChan】
subject
Given a string of numbers S, such as S = "123456579", We can divide it into Fibonacci sequences [123, 456, 579].
Formally , The Fibonacci sequence is a list of nonnegative integers F, And meet :
- 0 <= F[i] <= 2^31 - 1,( in other words , Every integer matches 32 Bit signed integer type );
- F.length >= 3;
- For all 0 <= i < F.length - 2, There are F[i] + F[i+1] = F[i+2] establish .
in addition , Please note that , When you split a string into small pieces , The number of each block must not start with zero , Unless this block is a number 0 In itself .
Return from S Any set of Fibonacci sequence blocks that are split out , If it can't be split, return [].
Example 1:
Input :"123456579"
Output :[123,456,579]
Example 2:
Input : "11235813"
Output : [1,1,2,3,5,8,13]
Example 3:
Input : "112358130"
Output : []
explain : The task cannot be accomplished .
Example 4:
Input :"0123"
Output :[]
explain : The number of each block cannot start with zero , therefore "01","2","3" Not a valid answer .
Example 5:
Input : "1101111"
Output : [110, 1, 111]
explain : Output [11,0,11,11] It's also accepted .
Tips :
- 1 <= S.length <= 200
- character string S There are only numbers in it .
public static List<Integer> _143_fabonaci(String text) {
List<Integer> result = new ArrayList<>();
boolean suc = dfsFabonaci(text.toCharArray(), 0, result);
// If you return true, explain result The array satisfies the Fibonacci sequence
return suc ? result : new ArrayList<>();
}
private static boolean dfsFabonaci(char[] chars, int index, List<Integer> result) {
if (index == chars.length && result.size() >= 3) {
return true;
}
if (index == chars.length) {
return false;
}
Long num = 0L;
int cursor = index;
while (cursor < chars.length) {
num = num * 10 + (chars[cursor] - '0');
if (num > Integer.MAX_VALUE) {
break;
}
// The current number exceeds the previous two , prune
if ((result.size() >= 2 && result.get(result.size() - 1) + result.get(result.size() - 2) < num.intValue())) {
break;
}
// The current list is less than two , Or the first two sums of the current list are equal to the current value , Recursion
if ((result.size() < 2 || result.get(result.size() - 1) + result.get(result.size() - 2) == num.intValue())) {
result.add(num.intValue());
boolean res = dfsFabonaci(chars, cursor + 1, result);
if (res) {
return true;
}
result.remove(result.size() - 1);
}
// If you encounter 0, There is no need to continue , prevent 0xx Numbers
if (num == 0L) {
break;
}
cursor++;
}
return false;
}
边栏推荐
- Vanishing numbers
- Legion is a network penetration tool
- 基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 1
- [200 opencv routines] 218 Multi line italic text watermark
- Some summaries of the third anniversary of joining Ping An in China
- Hands on deep learning (34) -- sequence model
- Golang Modules
- 有老师知道 继承RichSourceFunction自定义读mysql怎么做增量吗?
- 基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 2
- Latex learning insertion number - list of filled dots, bars, numbers
猜你喜欢
Use the data to tell you where is the most difficult province for the college entrance examination!
Hands on deep learning (45) -- bundle search
Hands on deep learning (37) -- cyclic neural network
Hands on deep learning (46) -- attention mechanism
Servlet基本原理与常见API方法的应用
Regular expression (I)
直方图均衡化
leetcode1-3
Latex learning insertion number - list of filled dots, bars, numbers
uniapp 处理过去时间对比现在时间的时间差 如刚刚、几分钟前,几小时前,几个月前
随机推荐
2021-08-11 function pointer
Hands on deep learning (34) -- sequence model
【Day1】 deep-learning-basics
Batch distribution of SSH keys and batch execution of ansible
Lavel document reading notes -how to use @auth and @guest directives in lavel
Mmclassification annotation file generation
Vanishing numbers
Doris / Clickhouse / Hudi, a phased summary in June
【OpenCV 例程200篇】218. 多行倾斜文字水印
Exercise 9-4 finding books (20 points)
Development guidance document of CMDB
Container cloud notes
Golang Modules
2. Data type
What are the advantages of automation?
C # use gdi+ to add text to the picture and make the text adaptive to the rectangular area
Ruby time format conversion strftime MS matching format
Hands on deep learning (32) -- fully connected convolutional neural network FCN
MySQL develops small mall management system
xxl-job惊艳的设计,怎能叫人不爱