逻辑思维养成——编程题目思考
冲!
旧事渐暖
show me your code.
展开
-
c语言刷题week one
这个题思路被点播之后就很简单了,但二刷还是有点问题,主要是在0阶台阶算几种方法,根据题目自测输出,应该是一种,这样就好办,可以把2个台阶的表示为0个台阶+1个台阶,f(n) = f(n-1) + f(n-2),公式比较统一。另外一个是对结果的除余要放在内部,每一步进行除余数,不能到最后再除,会出现数组越界的情况。题目有点长,其实就是怎么直接通过操作当前节点实现删除当前节点效果。c语言数组:指针可以表示数组,直接把指针名当数组名用就可以了。两个数交集,c语言复杂的很。比较字符串最小字母出现频率。原创 2023-03-26 22:11:35 · 293 阅读 · 1 评论 -
两数相加力扣
不处理的话结果是89111。所以carry等于1再加个next。敏捷开发,先实现最基本的功能。原创 2022-07-31 10:51:15 · 86 阅读 · 0 评论 -
广度优先搜索:由简入繁,化繁为简。
广度搜索是一个淘汰赛,大家先投简历,筛掉一部分,再笔试,筛掉一部分,再面试,再筛一部分,最后的就是可行解,有的还要找出最优解,再加一轮Hr面。单独取出队首的可行解,再深入一点检测是否仍然满足。广度优先搜索入门题目,框架基本都是这样的。建队列保存每一个暂时可行的可行解。............原创 2022-07-16 22:27:02 · 468 阅读 · 0 评论 -
2023华为机考刷题指南:八周机考速通车
华为机试题库总结原创 2022-07-08 17:39:17 · 20187 阅读 · 16 评论 -
树的三种遍历方式,非递归实现
三种非递归遍历原创 2022-06-25 17:56:58 · 168 阅读 · 0 评论 -
进阶题解:链表相交,吊打代码随想录
随想录解法:class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode* curA = headA; ListNode* curB = headB; int lenA = 0, lenB = 0; while (curA != NULL) { // 求链表A的长度 lenA原创 2022-06-07 12:06:19 · 50 阅读 · 0 评论 -
OJ在线编程常见输入输出练习场
输入描述:输入第一行包括一个数据组数t(1原创 2022-06-04 22:28:40 · 217 阅读 · 0 评论 -
动态规划5步法初阶
代码随想录5步法,严格按照这5步来做,比较思路清晰。原创 2022-05-31 22:18:57 · 74 阅读 · 0 评论 -
进阶题解:反转链表
进阶解反转链表原创 2022-05-23 16:44:08 · 88 阅读 · 0 评论 -
入门级题解:9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.考虑负数,负数这里是不算做回文数的2,要不要考虑小数,题目给了不考虑小数,是整数常规思路就是.原创 2022-05-01 15:48:50 · 227 阅读 · 0 评论 -
38:合并两个有序数组
方法1先合并再排序class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i = m,j = 0; while(i<n+m){ nums1[i++] = nums2[j++]; } sort(nums1.begin(),nums原创 2022-02-27 20:02:02 · 83 阅读 · 0 评论 -
37: 合并区间
题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。思路这道题我的思路完全正确,先把每段的左端点升序排列,然后用第一段做基准,后面i个首先用i的右端点和第一段的左端点比较1.i <= 第一段,就直接把前一段写进二维数组2.i > 第一段,i的右端点作为新的右端点base,以后用这个做比较class Solution原创 2022-02-25 23:33:36 · 77 阅读 · 0 评论 -
36题:找重复的
哈希表class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_map<int, bool> map; for(int num : nums) { if(map[num]) return num; map[num] = true; } return -1;原创 2022-02-24 20:14:58 · 57 阅读 · 0 评论 -
35:16. 最接近的三数之和
题目class Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); int len = nums.size(); int diff = target - nums[0]-nums[2]-nums[1]; int threeSumClosest = nums[0]原创 2022-02-23 22:37:55 · 185 阅读 · 0 评论 -
33.11. 盛最多水的容器
题目给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。错误思路简单的两个for循环很快写出来,超时了这种情况肯定要降维,就是变化中找不变,可惜我失败了,尝试方向错误了,用if else实现不了双指针就是很简单,双重循环中做了很多无谓的比较,我们不需要全部比较,头尾指针,移动较小的指针,原创 2022-02-22 23:43:55 · 55 阅读 · 0 评论 -
33.121. 买卖股票的最时机
假如计划在第 i 天卖出,那么最大利润的差值一定是在[0, i-1] 之间选最低点买入;所以遍历数组,依次求每个卖出时机的的最大差值,再从中取最大值。原创 2022-02-22 08:53:44 · 185 阅读 · 0 评论 -
32.136. 只出现一次的数字
我的class Solution {public: int singleNumber(vector<int>& nums) { sort(nums.begin(),nums.end()); int len = nums.size(); if(len <= 1){ return nums[0]; } int dex = 0; while(dex >原创 2022-02-16 20:12:34 · 231 阅读 · 0 评论 -
1380. 矩阵中的幸运数
class Solution {public: vector<int> luckyNumbers (vector<vector<int>>& matrix) { int m = matrix.size(), n = matrix[0].size(); vector<int> minRow(m, INT_MAX), maxCol(n); for (int i = 0; i < m; i++)原创 2022-02-15 18:50:44 · 52 阅读 · 0 评论 -
入门级题解31:540. 有序数组中的单一元素
情人节别的都成双成对,就你一个单身狗原创 2022-02-14 17:57:10 · 6411 阅读 · 0 评论 -
280场周赛
wuyu原创 2022-02-13 19:47:32 · 119 阅读 · 0 评论 -
入门级题解14. 最长公共前缀
无语原创 2022-02-13 19:02:58 · 118 阅读 · 0 评论 -
入门级题解15. 三数之和
百钱百鸡问题,优化二重循环用的就是那个加法加数一个增加另一个减小原创 2022-02-12 15:32:01 · 54 阅读 · 0 评论 -
入门级题解5. 最长回文子串
Manacher = 马拉车,估计本人知道了会笑死,哈哈哈原创 2022-02-10 19:37:03 · 63 阅读 · 0 评论 -
入门级题解7. 整数反转
ctrl+c,ctrl+v,完成每日一题,继续过年。原创 2022-02-10 11:52:19 · 280 阅读 · 0 评论 -
入门级题解3. 无重复字符的最长子串
我们可以使用「滑动窗口」来解决这个问题原创 2022-02-07 00:47:36 · 180 阅读 · 0 评论 -
入门级题解:704. 二分查找
为了避免出现死循环,考虑nums = [-1,0,3,5,9,12], target = 2。由于目标2不在nums里面,如果我们不-1/+1,那么这个while循环就永远不会终止,因为在 left=1,right=2 时,mid的更新结果 一直是1,并且 left<=right 恒满足因此while循环永不终止,所以必须 +1/-1,跳出while循环。原创 2022-02-04 13:09:53 · 1427 阅读 · 0 评论 -
入门级题解:剑指 Offer 09. 用两个栈实现队列
时间复杂度:对于插入和删除操作,时间复杂度均为 O(1)O(1)。插入不多说,对于删除操作,虽然看起来是 O(n)O(n) 的时间复杂度,但是仔细考虑下每个元素只会「至多被插入和弹出 stack2 一次」,因此均摊下来每个元素被删除的时间复杂度仍为 O(1)O(1)。空间复杂度:O(n)O(n)。需要使用两个栈存储已有的元素。原创 2022-02-03 11:51:18 · 79 阅读 · 0 评论 -
入门级题解:2000. 反转单词前缀
可以用递归做原创 2022-02-02 11:03:53 · 375 阅读 · 0 评论 -
入门级题解2:394. 字符串解码
这个没用栈,突然发现。原创 2022-01-29 11:15:15 · 851 阅读 · 0 评论 -
入门级题解394. 字符串解码
数字存放在数字栈,字符串存放在字符串栈,遇到右括号时候弹出一个数字栈,字母栈弹到左括号为止。就是逆波兰式那种题原创 2022-01-27 20:52:23 · 916 阅读 · 0 评论 -
入门级题解71. 简化路径
栈用来维护路径中的目录,将路径以"/"进行分割,我们会得到“.”、“..”、“路径”和“ ”四种其中因为“..”表示上级路径,因此如果栈顶有元素的话,要将其弹出,表示切换到上级目录至于“.”,因为表示的是当前目录,实际上和“ ”一样没有什么作用,直接无视掉就好了最后栈中剩下的元素,再使用"/"拼接回去,就大功告成了。原创 2022-01-26 16:03:44 · 327 阅读 · 0 评论 -
入门级题解147. 对链表进行插入排序
插入排序,先要搞好已经排序好的序列,可以自己建,可以巧妙使用题目给的,插入的时候是遇到小于的情况插到小于的这个值前面。原创 2022-01-24 22:44:22 · 544 阅读 · 0 评论 -
入门级题解:剑指 Offer 22. 链表中倒数第k个节点
简单源于规整原创 2022-01-22 11:54:25 · 338 阅读 · 0 评论 -
链表常用函数(自用,持续更新ing)
造轮子原创 2022-01-22 11:12:22 · 379 阅读 · 0 评论 -
入门级题解:剑指 Offer 06. 从尾到头打印链表
先反转链表,再遍历,这样就不需要额外的栈空间开销原创 2022-01-22 09:22:42 · 66 阅读 · 0 评论 -
入门级题解146. LRU 缓存
题目地址:https://leetcode-cn.com/problems/lru-cache/读题:题目真的好复杂啊~~~题解链接:https://leetcode-cn.com/problems/lru-cache/solution/lruhuan-cun-ji-zhi-by-leetcode-solution/原创 2022-01-21 13:04:23 · 399 阅读 · 0 评论 -
入门级题解143. 重排链表
今天的字节面试题, 最优解通过。原创 2022-01-20 19:25:51 · 100 阅读 · 0 评论 -
入门级题解206. 反转链表
每一道题目都这样,我是不是永远只能看懂不能自己想到,我太菜了(╥╯^╰╥)原创 2022-01-20 16:19:09 · 512 阅读 · 0 评论 -
入门级题解138. 复制带随机指针的链表
浅拷贝: 返回地址一样的链表。 深拷贝: 返回地址不一样,但关系一致的链表。 所以不能直接简单粗暴的遍历复制, 这样出来的复制是一样的地址,不符合题目的深拷贝要求。原创 2022-01-20 10:46:11 · 194 阅读 · 0 评论 -
入门级题解142. 环形链表 II
数学推导才是重点。。。原创 2022-01-19 15:42:45 · 270 阅读 · 0 评论