当前位置:网站首页>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;
}
边栏推荐
- System.currentTimeMillis() 和 System.nanoTime() 哪个更快?别用错了!
- Safety reinforcement learning based on linear function approximation safe RL with linear function approximation translation 2
- Exercise 9-3 plane vector addition (15 points)
- Devop basic command
- Application of safety monitoring in zhizhilu Denggan reservoir area
- Go context basic introduction
- 浅谈Multus CNI
- Laravel文档阅读笔记-How to use @auth and @guest directives in Laravel
- Basic principle of servlet and application of common API methods
- For programmers, if it hurts the most...
猜你喜欢

品牌连锁店5G/4G无线组网方案

Hands on deep learning (46) -- attention mechanism

Servlet基本原理与常见API方法的应用

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

Realsense of d435i, d435, d415, t265_ Matching and installation of viewer environment

Fabric of kubernetes CNI plug-in
Summary of reasons for web side automation test failure
![[FAQ] summary of common causes and solutions of Huawei account service error 907135701](/img/73/c4ee842475f05e2e67297fcac68779.png)
[FAQ] summary of common causes and solutions of Huawei account service error 907135701

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

uniapp 处理过去时间对比现在时间的时间差 如刚刚、几分钟前,几小时前,几个月前
随机推荐
Sword finger offer 31 Stack push in and pop-up sequence
Exercise 9-4 finding books (20 points)
2021-08-11 function pointer
Es advanced series - 1 JVM memory allocation
Service developers publish services based on EDAs
Lavel document reading notes -how to use @auth and @guest directives in lavel
Golang defer
Exercise 8-7 string sorting (20 points)
Dynamic address book
7-17 crawling worms (15 points)
Reasons and solutions for the 8-hour difference in mongodb data date display
leetcode1-3
【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法
Hands on deep learning (36) -- language model and data set
Exercise 9-1 time conversion (15 points)
How can people not love the amazing design of XXL job
Development guidance document of CMDB
View CSDN personal resource download details
2021-08-10 character pointer
Latex insert picture, insert formula