当前位置:网站首页>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() 哪个更快?别用错了!
- System.currentTimeMillis() 和 System.nanoTime() 哪个更快?别用错了!
- Button wizard business running learning - commodity quantity, price reminder, judgment Backpack
- Fabric of kubernetes CNI plug-in
- Intelligent gateway helps improve industrial data acquisition and utilization
- 基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 1
- Network disk installation
- C语言指针经典面试题——第一弹
- The future education examination system cannot answer questions, and there is no response after clicking on the options, and the answers will not be recorded
- [FAQ] summary of common causes and solutions of Huawei account service error 907135701
猜你喜欢

Nuxt reports an error: render function or template not defined in component: anonymous

Hands on deep learning (37) -- cyclic neural network

C # use gdi+ to add text with center rotation (arbitrary angle)

【Day1】 deep-learning-basics

Hands on deep learning (41) -- Deep recurrent neural network (deep RNN)

百度研发三面惨遭滑铁卢:面试官一套组合拳让我当场懵逼

技术管理进阶——如何设计并跟进不同层级同学的绩效

Dynamic address book

Application of safety monitoring in zhizhilu Denggan reservoir area

转载:等比数列的求和公式,及其推导过程
随机推荐
IIS configure FTP website
Basic principle of servlet and application of common API methods
El Table Radio select and hide the select all box
Exercise 9-1 time conversion (15 points)
Hands on deep learning (33) -- style transfer
System. Currenttimemillis() and system Nanotime (), which is faster? Don't use it wrong!
Mmclassification annotation file generation
leetcode1-3
按键精灵跑商学习-商品数量、价格提醒、判断背包
Latex insert picture, insert formula
Dynamic memory management
On Multus CNI
对于程序员来说,伤害力度最大的话。。。
Kubernetes CNI 插件之Fabric
Lavel document reading notes -how to use @auth and @guest directives in lavel
智能网关助力提高工业数据采集和利用
Hands on deep learning (III) -- Torch Operation (sorting out documents in detail)
Exercise 9-4 finding books (20 points)
Safety reinforcement learning based on linear function approximation safe RL with linear function approximation translation 1
基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 1