7个步骤实现知识资产化:资源保存与知识管理全指南

核心内容摘要

Maven配置加载:动态替换的艺术
中英日韩都能说?IndexTTS 2.0多语言合成功能测评

PaperMC:高性能Minecraft服务器优化方案全解析

(新卷,100分)- 堆栈中的剩余数字Java JS Python题目描述向一个空栈中依次存入正整数假设入栈元素 n(1n2^31-

按顺序依次为 nx…n

n

n

n1, 每当元素入栈时如果 n1n2…ny(y 的范围[2,x] 1x

则 n1~ny 全部元素出栈重新入栈新元素 m(m2*n

如依次向栈存入

6、

1、

3, 当存入

6、

2 时栈底至栈顶依次为[

6、

2]当存入 3时 321

3、

1 全部出栈重新入栈元素 6(62*

此时栈中有元素 6因为 66所以两个 6 全部出栈存入 12最终栈中只剩一个元素 12。

输入描述使用单个空格隔开的正整数的字符串如”5 6 7 8″ 左边的数字先入栈输入的正整数个数为 x 1x1000。

输出描述最终栈中存留的元素值元素值使用空格隔开如”8 7 6 5″ 栈顶数字在左边。

6 1 2 3用例输入5 10 20 50 85 1输出1 170说明510205085 输入 85 时

5、

10、

20、

85 全部出栈入栈 170最终依次出栈的数字为 1 和 170。

输入6 7 8 13 9输出9 13 8 7 6说明无输入1 2 5 7 9 1 2 2输出4 1 9 14 1说明无题目解析本题较为简单的解题思路是每当有元素num将要入栈前都尝试num去依次减去栈顶到栈底方向的栈中元素注意这只是遍历栈的过程而不是弹栈过程如果有出现num 0则将遍历过栈元素全部弹栈并压入num * 2。

如果没有出现num 0则栈不做变动只压栈num但是需要注意的是对于情况1而言我们需要注意题目描述中的这句话每当元素入栈时如果 n1n2…ny(y 的范围[2,x] 1x

则 n1~ny 全部元素出栈重新入栈新元素 m(m2*n

那么压栈 num * 2 是否也算新元素入栈呢是否需要继续检查等价栈元素呢我理解是需要的即这个压栈num * 2 的过程是一个需要递归的过程。

Java算法源码import java.util.Arrays; import java.util.LinkedList; import java.util.Scanner; import java.util.StringJoiner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); int[] nums Arrays.stream(sc.nextLine().split( )).mapToInt(Integer::parseInt).toArray(); System.out.println(getResult(nums)); } public static String getResult(int[] nums) { LinkedListInteger stack new LinkedList(); stack.add(nums[0]); for (int i 1; i nums.length; i) { push(nums[i], stack); } StringJoiner sj new StringJoiner( ); while (stack.size()

{ sj.add(stack.removeLast() ); } return sj.toString(); } public static void push(int num, LinkedListInteger stack) { int sum num; for (int i stack.size() - 1; i 0; i--) { sum - stack.get(i); if (sum

{ stack.subList(i, stack.size()).clear(); push(num * 2, stack); return; } else if (sum

{ break; } } stack.add(num); } }JS算法源码/* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on(line, (line) { const nums line.split( ).map(Number); console.log(getResult(nums)); }); function getResult(nums) { const stack [nums[0]]; for (let i 1; i nums.length; i) { push(nums[i], stack); } return stack.reverse().join( ); } function push(num, stack) { let sum num; for (let i stack.length - 1; i 0; i--) { sum - stack[i]; if (sum

{ stack.splice(i); push(num * 2, stack); return; } else if (sum

{ break; } } stack.push(num); }Python算法源码# 输入获取 nums list(map(int, input().split())) def push(num, stack): total num for i in range(len(stack)-1, -1, -

: total - stack[i] if total 0: del stack[i:] push(num * 2, stack) return elif total 0: break stack.append(num) # 算法入口 def getResult(): stack [nums[0]] for i in range(1, len(nums)): push(nums[i], stack) stack.reverse() return .join(map(str, stack)) # 算法调用 print(getResult())

jalapskxixi免费2025kino-jalapskxixi免费应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123