当前位置:网站首页>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;
}
边栏推荐
- Service developers publish services based on EDAs
- Doris / Clickhouse / Hudi, a phased summary in June
- El Table Radio select and hide the select all box
- Golang type comparison
- Safety reinforcement learning based on linear function approximation safe RL with linear function approximation translation 2
- C语言指针经典面试题——第一弹
- Sword finger offer 31 Stack push in and pop-up sequence
- Golang Modules
- C language pointer interview question - the second bullet
- 百度研发三面惨遭滑铁卢:面试官一套组合拳让我当场懵逼
猜你喜欢
uniapp 处理过去时间对比现在时间的时间差 如刚刚、几分钟前,几小时前,几个月前
Devop basic command
Work order management system OTRs
Matlab tips (25) competitive neural network and SOM neural network
IIS configure FTP website
Tables in the thesis of latex learning
C语言指针面试题——第二弹
El Table Radio select and hide the select all box
【OpenCV 例程200篇】218. 多行倾斜文字水印
Use the data to tell you where is the most difficult province for the college entrance examination!
随机推荐
Exercise 9-3 plane vector addition (15 points)
Hands on deep learning (44) -- seq2seq principle and Implementation
Histogram equalization
leetcode1-3
基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 2
Matlab tips (25) competitive neural network and SOM neural network
2021-08-10 character pointer
Tables in the thesis of latex learning
2021-08-11 function pointer
按键精灵跑商学习-商品数量、价格提醒、判断背包
2. Data type
IIS configure FTP website
Development guidance document of CMDB
【Day1】 deep-learning-basics
Work order management system OTRs
Exercise 7-8 converting strings to decimal integers (15 points)
华为联机对战如何提升玩家匹配成功几率
Es entry series - 6 document relevance and sorting
Debug:==42==ERROR: AddressSanitizer: heap-buffer-overflow on address
智慧路灯杆水库区安全监测应用