当前位置:网站首页>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;
}
边栏推荐
- Realsense d435 d435i d415 depth camera obtains RGB map, left and right infrared camera map, depth map and IMU data under ROS
- Legion is a network penetration tool
- Kotlin set operation summary
- Latex arranges single column table pictures in double column format articles
- Golang defer
- Vanishing numbers
- C # use gdi+ to add text with center rotation (arbitrary angle)
- System.currentTimeMillis() 和 System.nanoTime() 哪个更快?别用错了!
- Nuxt reports an error: render function or template not defined in component: anonymous
- Laravel文档阅读笔记-How to use @auth and @guest directives in Laravel
猜你喜欢

Vs201 solution to failure to open source file HPP (or link library file)

uniapp 处理过去时间对比现在时间的时间差 如刚刚、几分钟前,几小时前,几个月前

六月份阶段性大总结之Doris/Clickhouse/Hudi一网打尽

MATLAB小技巧(25)竞争神经网络与SOM神经网络

Regular expression (I)

Application of safety monitoring in zhizhilu Denggan reservoir area

Safety reinforcement learning based on linear function approximation safe RL with linear function approximation translation 1

智慧路灯杆水库区安全监测应用

Hands on deep learning (45) -- bundle search

Kubernetes CNI 插件之Fabric
随机推荐
Es entry series - 6 document relevance and sorting
Use C to extract all text in PDF files (support.Net core)
Hands on deep learning (44) -- seq2seq principle and Implementation
Latex insert picture, insert formula
Hands on deep learning (45) -- bundle search
Nuxt reports an error: render function or template not defined in component: anonymous
Golang Modules
Exercise 8-7 string sorting (20 points)
Hands on deep learning (37) -- cyclic neural network
Hands on deep learning (39) -- gating cycle unit Gru
uniapp---初步使用websocket(长链接实现)
SQL replying to comments
Write a mobile date selector component by yourself
System.currentTimeMillis() 和 System.nanoTime() 哪个更快?别用错了!
Sword finger offer 31 Stack push in and pop-up sequence
按键精灵打怪学习-识别所在地图、跑图、进入帮派识别NPC
品牌连锁店5G/4G无线组网方案
Uniapp--- initial use of websocket (long link implementation)
Container cloud notes
Qtreeview+ custom model implementation example