公司的网站离婚律师免费咨询
2026/2/15 6:02:35 网站建设 项目流程
公司的网站,离婚律师免费咨询,wordpress year,p2p网站开发的内容求幸存数之和 2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录#xff5c;机考题库 算法考点详解 题目描述 给一个正整数数列 nums#xff0c;一个跳数 jump#xff0c;及幸存数量…求幸存数之和2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录机考题库 算法考点详解题目描述给一个正整数数列 nums一个跳数 jump及幸存数量 left。运算过程为从索引0的位置开始向后跳中间跳过 J 个数字命中索引为 J1 的数字该数被敲出并从该点起跳以此类推直到幸存 left 个数为止然后返回幸存数之和。约束0是第一个起跳点起跳点和命中点之间间隔 jump 个数字已被敲出的数字不计入在内。跳到末尾时无缝从头开始循环查找并可以多次循环。若起始时 left len(nums) 则无需跳数处理过程。输入描述第一行输入正整数数列第二行输入跳数第三行输入幸存数量输出描述输出幸存数之和用例1输入1,2,3,4,5,6,7,8,9 4 3输出13说明从1索引为0开始起跳中间跳过 4 个数字因此依次删除 6,2,8,5,4,7。剩余1,3,9返回和为13题解思路模拟解析输入正整数序列按照,进行分割得到数组。如果数组长度小于等于left,不需要进行跳数直接输出数组和就行。数组长度大于left情况构建循环链表按照题意进行处理即可(这部分可以参照下面代码)主要注意一个点要移除链表某个节点应该是有执行它前继节点的引用。执行3的逻辑直到剩余节点数量等于left结束此时计算剩余节点和就是结果。c#includeiostream #includevector #includestring #include utility #include sstream #includealgorithm #includecmath #includemap #includelist using namespace std; // 循环链表节点 struct Node { int val; Node* next; Node(int v) : val(v), next(nullptr) {} }; // 通用 切割函数 函数 将字符串str根据delimiter进行切割 vectorint split(const string str, const string delimiter) { vectorint result; size_t start 0; size_t end str.find(delimiter); while (end ! string::npos) { result.push_back(stoi(str.substr(start, end - start))); start end delimiter.length(); end str.find(delimiter, start); } // 添加最后一个部分 result.push_back(stoi(str.substr(start))); return result; } int main() { string input; getline(cin, input); int jumpCount; cin jumpCount; int left; cin left; vectorint nums split(input, ,); int n nums.size(); int sum 0; for (int i 0; i n; i) { sum nums[i]; } // 无需进行跳数处理 if (left n) { cout sum; return 0; } // 构建循环链表 Node* head new Node(nums[0]); Node* prev head; for (int i 1; i n; i) { prev-next new Node(nums[i]); prev prev-next; } // 成环 prev-next head; Node* cur head; int leftCount n; // 循环删除 while (leftCount left) { // 跳过 jump 个节点 for (int i 0; i jumpCount; i) { cur cur-next; } // 删除 cur-next Node* del cur-next; cur-next del-next; delete del; leftCount--; } // 计算结果 int result 0; Node* p cur-next; for (int i 0; i left; i) { result p-val; p p-next; } cout result \n; return 0; }JAVAimport java.io.*; import java.util.*; // 循环链表节点 class Node { int val; Node next; Node(int v) { val v; next null; } } public class Main { public static void main(String[] args) throws Exception { BufferedReader br new BufferedReader(new InputStreamReader(System.in)); // 第一行正整数数列逗号分隔 String line br.readLine().trim(); String[] parts line.split(,); int n parts.length; int[] nums new int[n]; int sum 0; for (int i 0; i n; i) { nums[i] Integer.parseInt(parts[i]); sum nums[i]; } // 第二行跳数 int jumpCount Integer.parseInt(br.readLine().trim()); // 第三行幸存数量 int left Integer.parseInt(br.readLine().trim()); // 无需进行跳数处理 if (left n) { System.out.println(sum); return; } // 构建循环链表 Node head new Node(nums[0]); Node prev head; for (int i 1; i n; i) { prev.next new Node(nums[i]); prev prev.next; } // 成环 prev.next head; Node cur head; int leftCount n; // 循环删除 while (leftCount left) { // 跳过 jumpCount 个节点 for (int i 0; i jumpCount; i) { cur cur.next; } // 删除 cur.next Node del cur.next; cur.next del.next; leftCount--; } //计算结果 int result 0; Node p cur.next; for (int i 0; i left; i) { result p.val; p p.next; } System.out.println(result); } }Pythonimportsys# 循环链表节点classNode:def__init__(self,v):self.valv self.nextNonedefmain():datasys.stdin.read().strip().splitlines()# 第一行正整数数列numslist(map(int,data[0].split(,)))nlen(nums)# 第二行跳数jumpCountint(data[1])# 第三行幸存数量leftint(data[2])totalsum(nums)# 无需进行跳数处理ifleftn:print(total)return#构建循环链表headNode(nums[0])prevheadforiinrange(1,n):prev.nextNode(nums[i])prevprev.next# 成环prev.nexthead curhead leftCountn#循环删除whileleftCountleft:# 跳过 jumpCount 个节点for_inrange(jumpCount):curcur.next# 删除 cur.nextcur.nextcur.next.nextleftCount-1# 计算结果result0pcur.nextfor_inrange(left):resultp.val pp.nextprint(result)if__name____main__:main()JavaScriptuse strict;constreadlinerequire(readline);// 创建 readline 接口constrlreadline.createInterface({input:process.stdin,output:process.stdout});letlines[];// 逐行读取输入rl.on(line,(line){lines.push(line.trim());});// 输入结束后处理rl.on(close,(){// 循环链表节点classNode{constructor(v){this.valv;this.nextnull;}}// 第一行正整数数列逗号分隔constnumslines[0].split(,).map(Number);constnnums.length;// 第二行跳数constjumpCountparseInt(lines[1],10);// 第三行幸存数量constleftparseInt(lines[2],10);letsumnums.reduce((a,b)ab,0);// 无需进行跳数处理if(leftn){console.log(sum);return;}// 构建循环链表letheadnewNode(nums[0]);letprevhead;for(leti1;in;i){prev.nextnewNode(nums[i]);prevprev.next;}// 成环prev.nexthead;letcurhead;letleftCountn;// 循环删除while(leftCountleft){// 跳过 jumpCount 个节点for(leti0;ijumpCount;i){curcur.next;}// 删除 cur.nextcur.nextcur.next.next;leftCount--;}// 计算结果letresult0;letpcur.next;for(leti0;ileft;i){resultp.val;pp.next;}console.log(result);});Gopackagemainimport(bufiofmtosstrconvstrings)// 循环链表节点typeNodestruct{valintnext*Node}funcmain(){in:bufio.NewReader(os.Stdin)// 第一行正整数数列line,_:in.ReadString(\n)linestrings.TrimSpace(line)parts:strings.Split(line,,)nums:make([]int,len(parts))sum:0fori,s:rangeparts{nums[i],_strconv.Atoi(s)sumnums[i]}// 第二行跳数varjumpCountintfmt.Fscan(in,jumpCount)// 第三行幸存数量varleftintfmt.Fscan(in,left)n:len(nums)// 无需进行跳数处理ifleftn{fmt.Println(sum)return}//构建循环链表head:Node{val:nums[0]}prev:headfori:1;in;i{prev.nextNode{val:nums[i]}prevprev.next}// 成环prev.nexthead cur:head leftCount:n//循环删除forleftCountleft{// 跳过 jumpCount 个节点fori:0;ijumpCount;i{curcur.next}// 删除 cur.nextcur.nextcur.next.next leftCount--}//计算结果result:0p:cur.nextfori:0;ileft;i{resultp.val pp.next}fmt.Println(result)}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询