Leetcode打卡日记(2020.3.1~2020.3.5)

2020.3.1 用栈实现队列(225)

使用队列实现栈的下列操作,push、pop、top、empty
思路,用数组实现时,栈和队列的区别就是pop、top操作的时候,栈是对数组某尾元素的操作,队列是对数组头部元素的操作,因此可以先获取队列中元素的数目size,然后对队列出队size-1个元素,然后再将这些元素依次入队,此时数组头部的元素就是原数组末尾的元素

2020.3.2 反转链表(206)

反转一个单链表
在遍历到链表的每个结点时,将结点的next指针指向上一个结点,这就需要维护一个变量去保存上一个结点,同时为了能遍历链表,还需要另一个变量去保存原下一结点。

2020.3.3 合并排序的数组(面试题10.01)

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。
因为给的两个数组都是排序好的,所以可以逐个比较并写入,得到的数组也是排序好的,注意可以从后往前写入,这样不会覆盖到还未比较的元素。

2020.3.4 腐烂的橘子(994)

在给定网格中,每个单元格的值可以为0表示空单元格,为1表示新鲜橘子,为2表示腐烂的橘子。每分钟任何与腐烂橘子(4个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。
思路,广度优先搜索,用队列实现。

2020.3.5 分糖果2(1103)

给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。返回一个长度为 num_people、元素之和为 candies 的数组,以表示糖果的最终分发情况(即 ans[i] 表示第 i 个小朋友分到的糖果数)。
因为分配的情况是固定的递增,所以当给定糖果数量,能确定糖果能分几次p,已经最后不足时剩余的数量q。只要确定了p和num_people,就可以知道完整分发的轮数p/num_people,和不完整分发中能收到完整糖果的人数$p%num_people

发布了11 篇原创文章 · 获赞 0 · 访问量 319

猜你喜欢

转载自blog.csdn.net/weixin_42379024/article/details/104669924