算法
IrvingZou
本人985计算机专业本科生,18岁才入门IT,拿到过蓝桥杯省级三等奖和软件设计大赛省级一等奖,做过图像处理方面的科研,正在不断“充电”,于2021年3月被纽约大学计算机工程硕士成功录取,将要开启下一段的学习。
除了写代码,也爱好篮球(控卫打法但技术太渣,喜欢库里),游泳(非常牛逼),音乐(超级nb,业余钢琴10级并于2010年过级)。
展开
-
LeetCode House Robber题解
1,题目内容如上图所示,该题目要求我们找出小偷能够偷取的最大的金额,且由于邻居安全系统的存在,不能在同一天晚上偷取两个相邻的住户。所以,小偷只能偷完一家再偷不相邻的另一家。2,题解思路首先分析如下的测试案例。[2,7,9,3,1]可见,首先,小偷只能从第一家和第二家选择一家来偷,那么怎么保证所偷金额最大呢?采用动态规划策略来思考:假定偷了第一家,然后,判断偷不偷第二家。由于开始一分钱没有,偷了第二家,金额是7,比第一家2大,故偷第二家而不偷第一家。后续这样考虑:判断偷不偷第n家,由于安全系原创 2021-05-17 11:01:03 · 145 阅读 · 0 评论 -
关于对选择排序的一些理解
学过排序算法的应该知道选择排序是指从数组中找出最大的值放在相应的位置。一般需要两重循环来实现,外重循环确定待排序的序列,内重循环则找出待排序序列中的最大值,出循环时将该值与外重循环所指定的下表做一个交换(swap)。不知道聪明的你有没有思考过,这个过程有一个递归的意思暗藏在里面。定义递归函数select,参数指定最大值待放入的位置start。首先找出序列中的最大值,这里可由一个函数模块单独实现将待放入的位置(由参数start指定)的值与最大值做一个交换递归计算指定最大值为start+1的数组的se原创 2021-02-16 20:53:35 · 143 阅读 · 0 评论 -
109. Convert Sorted List to Binary Search Tree解题感悟
该道题需要我们将排序好的链表转换为平衡二叉排序树。注意,二叉排序树的概念是左子树的所有节点值比头结点值要小,右子树的所有节点值比头结点要大。而这道题还做出平衡二叉树的要求,也即:左子树的深度和右子树的深度之差的绝对值不超过1。我们可以来思考,对于已经有序的链表,是否可以考虑取中间节点为树的头结点,链表左侧表示树的左子树而右侧表示树的右子树。见如下视频:好了,看完带有我的小手的视频后我们开始写代码。这里对于链表查找中间节点的方式可以用快慢指针的方式。即:快指针一次移动两个next;慢指针一次移动原创 2020-06-12 22:39:08 · 116 阅读 · 0 评论 -
LeetCode 71 Simplify Path题解
首先上题目内容原创 2020-03-06 21:12:02 · 188 阅读 · 0 评论 -
LeetCode Spiral Matrix 题解
该题目的详细内容如下截图:分析:题目是想让我们将一个二维的矩阵按照螺旋的方式输出。如下图的描述所示:(原谅我用word画的一个awful的图示)所以,不难想到应该可以在O(1)的时间复杂度内解决这个问题。思路:1,设置四个障碍,分别表示行起始下标,终止下标;列起始下标,终止下标。2,待输出的指示器触碰到任何一个障碍时,输出方向就做相应的改变,同时,需要重新调整障碍。调整规律如下:1...原创 2019-07-07 11:13:21 · 142 阅读 · 0 评论 -
Rotate List LeetCode 题解
首先上题目:题目中给定了一个K(旋转次数),输入一个链表,要求将链表从末尾旋转k次。那么难点在于:怎样快速找到链表的末尾怎样调整头指针对于第二个问题,只需给定一个临时的指针变量,待指到最后一个节点时,将最后一个节点反指回头结点,再将头结点指到临时指针的位置。对于第一个问题,可以考虑连续两次移动指针的方式来找到表尾的方式。(如下图)最后,一个非常狗血的问题:测试样例有k值上万的情...原创 2019-07-28 13:38:21 · 119 阅读 · 0 评论