news 2026/10/8 17:51:23

考核算法题纠错

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
考核算法题纠错

考核题算法题纠错

打家劫舍

introb(int*nums,intnumsSize){if(numsSize==0)return0;if(numsSize==1)returnnums[0];intprev_prev=nums[0];intprev=nums[0]>nums[1]?nums[0]:nums[1];for(inti=2;i<numsSize;++i){intcurrent=prev>(prev_prev+nums[i])?prev:(prev_prev+nums[i]);prev_prev=prev;prev=current;}returnprev;}

本题主要用的是动态规划
逻辑:偷第 i 间房:不能偷第 i-1 间,总金额 = 第 i 间金额 + 前 i-2 间的最大金额
不偷第 i 间房:总金额 = 前 i-1 间的最大金额
取两者最大值,即为前 i 间房的最大金额
步骤一:定义两个变量prev_prev为前i-2间房的最大金额,prev为前i-1间房的的最大金额
步骤二:状态转移方程:
遍历到第 i 间房时,当前最大金额:current = max(不偷当前房:prev, 偷当前房:prev_prev + nums[i])
步骤三:初始化:
无房屋(numsSize=0):返回 0
仅 1 间房屋(numsSize=1):返回 nums[0]
仅 2 间房屋(numsSize=2):返回 max(nums[0], nums[1])(初始化 prev_prev 和 prev)
步骤四:迭代计算:
从第 3 间房(i=2)开始遍历,每轮计算后更prev_prev 和 prev:
prev_prev = 原来的prev(旧的 i-1 变为新的 i-2
prev = current(当前 i 的最优解变为新的 i-1)
遍历结束后,prev 即为所有房屋的最大金额。

合并k个升序链表

structListNode*mergeTwoLists(structListNode*l1,structListNode*l2){if(l1==NULL)returnl2;if(l2==NULL)returnl1;structListNodedummy;structListNode*tail=&dummy;while(l1!=NULL&&l2!=NULL){if(l1->val<l2->val){tail->next=l1;l1=l1->next;}else{tail->next=l2;l2=l2->next;}tail=tail->next;}tail->next=(l1!=NULL)?l1:l2;returndummy.next;}structListNode*merge(structListNode**lists,intleft,intright){if(left>right)returnNULL;if(left==right)returnlists[left];intmid=left+(right-left)/2;structListNode*leftMerge=merge(lists,left,mid);structListNode*rightMerge=merge(lists,mid+1,right);returnmergeTwoLists(leftMerge,rightMerge);}structListNode*mergeKLists(structListNode**lists,intlistsSize){if(listsSize==0)returnNULL;returnmerge(lists,0,listsSize-1);}

逻辑:

  1. 拆分:将k个链表的数组从中间分成左右两部分,递归合并成左半部分和右半部分
  2. 合并:递归的终止条件是拆分到只剩0/1个链表(直接返回),或2个链表

关键步骤:

  1. 辅助函数:mergeTwoLists(合并两个升序链表)
    作用:负责合并两个有序链表;
    逻辑:用虚拟头节点 dummy 遍历两个链表,每次取较小的节点接入结果,最后拼接剩余节点。
  2. 递归核心:merge 函数
    lists 是链表数组,left/right 是当前处理的数组区间
    终止条件:left > right:空区间,返回 NULL;
    left == right:区间内只有 1 个链表,直接返回该链表
    递归:计算中间点 mid,将区间拆分为 [left, mid] 和 [mid+1, right],分别递归合并
    向上合并:将左右两个子区间合并的结果,再调用 mergeTwoLists 合并为一个链表
  3. 主函数:mergeKLists
    处理边界(空数组)后,调用 merge 函数,初始区间是 [0, listsSize-1](整个数组)。

二叉树的前序遍历

int*preorderTraversal(structTreeNode*root,int*returnSize){if(root==NULL){*returnSize=0;returnNULL;}structTreeNode*stack[10000];intstackTop=0;stack[stackTop++]=root;int*result=(int*)malloc(sizeof(int)*10000);intidx=0;while(stackTop>0){structTreeNode*curr=stack[--stackTop];result[idx++]=curr->val;if(curr->right!=NULL){stack[stackTop++]=curr->right;}if(curr->left!=NULL){stack[stackTop++]=curr->left;}}*returnSize=idx;returnresult;}

逻辑:前序遍历的顺序是 根节点 → 左子树 → 右子树,利用栈的 “后进先出” 特性实现

  1. 根节点入栈
  2. 出栈并记录值
  3. 子树入栈
  4. 循环直到栈空:

步骤:

  1. 初始栈化
  2. 初始化结果数组
  3. 栈循环处理(右子树先入栈左子树后入栈)
  4. 设置返回数组大小
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 13:01:57

大模型量化技术原理-ZeroQuant系列(一)

简单的看第一篇&#xff0c;这个系列目前有四篇左右&#xff0c;感兴趣可以去搜搜 ZeroQuant: Efficient and Affordable Post-Training Quantization for Large-Scale TransformersZeroQuant-V2: Exploring Post-training Quantization in LLMs from Comprehensive Study to …

作者头像 李华
网站建设 2026/10/9 15:58:29

RISCV的异常和中断

常规控制流&#xff1a;程序正常执行的指令流向&#xff0c;通过branch&#xff08;条件分支&#xff09;、jump&#xff08;无条件跳转&#xff09;指令改变执行顺序&#xff0c;是处理器的常规工作状态。异常控制流&#xff08;ECP&#xff09;&#xff1a;打破常规控制流的特…

作者头像 李华
网站建设 2026/10/8 9:18:59

vue基于Spring Boot框架的水果商城设计与实现_6628xfyb_

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/10/9 13:10:37

【入门级-数据结构-3、特殊树:完全二叉树的定义与基本性质】

一、完全二叉树的严格定义 完全二叉树&#xff08;Complete Binary Tree&#xff09;是二叉树中极具规律性的特殊结构。 完全二叉树需满足两个核心条件&#xff1a; 除最后一层外&#xff0c;每一层的节点数都达到最大值&#xff08;即第k层有2^(k-1)个节点&#xff0c;k≥1&am…

作者头像 李华
网站建设 2026/10/9 16:25:14

python用openpyxl操作excel-读取或创建excel文件

python用openpyxl操作excel-读取或创建excel1&#xff0c;读取 excel 文件返回 workbook 对象def excel_read(file_path):""" 读取Excel文件返回workbook对象 """if not os.path.exists(file_path):logger.error(f文件{file_path}不存在)return …

作者头像 李华
网站建设 2026/10/8 10:14:44

刷题日记day5(二分+前缀和)

题目描述 蒟蒻的第五篇博客希望大家支持 1314聪明的质检员 P1314 [NOIP 2011 提高组] 聪明的质监员 题目描述 小 T 是一名质量监督员&#xff0c;最近负责检验一批矿产的质量。这批矿产共有 nnn 个矿石&#xff0c;从 111 到 nnn 逐一编号&#xff0c;每个矿石都有自己的重…

作者头像 李华