转计算机架构2.5-算法刷题记录01

发布时间:2026/7/23 23:16:33

转计算机架构2.5-算法刷题记录01 数据结构里简单上手了C又简单了解了概念与方法算法部分练到再学现在参考这个从新手练起CS专业免费刷题网站分享|超全算法数据结构习题专业详解从菜鸟进阶大神三周就够了...-CSDN博客计划每晚刷一些1.LintCode新手必刷50题新手必刷编程50题 - LintCode弄完这个接下来要刷一些关于数据结构的题用来熟悉下语法。但是也有一些有意思的题1.1 二维数组与二级指针之前的文章里我认识到数组与指针间的某些关系比如指针加1会导致地址移动一个数组元素对应长度、指针也能用[]来运算等等但是*数组约等于**变量而一个数组类型的指针它的一个元素类型就是一个数组所以**变量就是二维数组。或者放指针的数组。1.2 二叉树三种遍历非递归实现这里用到栈的思想在写代码时要想到三种变量——此时遍历到的量、栈顶元素和出栈元素。重点要放在栈顶元素上而不是此时正在遍历的东西上关注此时遍历到的量在什么情况下入栈、什么时候对栈顶出栈对出栈元素进行操作2. 力扣2.1 数据结构 考研版分享在力扣备战考研数据结构 - 讨论 - 力扣LeetCode2.1.1 轮转数组第一道题就超时翻车了炼码(lintcode)只考虑完成与否没有考虑时空间复杂度。问了AI,要用数组翻转法感觉本质上来说还是一种双指针法。代码// 辅助函数用于翻转数组中的指定区间 [start, end] void reverse(int* nums, int start, int end) { while (start end) { int temp nums[start]; nums[start] nums[end]; nums[end] temp; start; end--; } } void rotate(int* nums, int numsSize, int k) { // 1. 处理 k 大于数组长度的情况 k k % numsSize; // 如果 k 为 0说明不需要任何轮转直接返回 if (k 0) return; // 2. 翻转整个数组 reverse(nums, 0, numsSize - 1); // 3. 翻转前 k 个元素 reverse(nums, 0, k - 1); // 4. 翻转剩余的 n - k 个元素 reverse(nums, k, numsSize - 1); }启发简单的算法感觉就是过程上玩指针结果上尽可能直接面向结果2.1.2 合并数组

相关新闻