剑指offer
ypw44
成为自己最想成为的人~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1482. 制作 m 束花所需的最少天数(经典二分+验证答案)
题意: 给你一个整数数组 bloomDay,以及两个整数 m 和 k 。 现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。 花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。 请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。 思路: 对于不能满足的情况无非是 bloomDay.size() < m * k; 我们很容易得到天数无非是在 bloomDay 元素中的最小值与最大值之间。 那么我们自原创 2021-05-09 13:39:58 · 231 阅读 · 0 评论 -
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
思路:由二叉搜索树的性质我们很容易得到从根结点到p和q的路径,那么p和q的最近公共祖先就是从根结点到他们路径上的最后一个相同的结点。 我们从根结点遍历搜索二叉树找到p跟q的路径并记录下来,然后遍历循环路径,找到第一个不相等的点,说明在此时分叉了,那么上一个我们存下来的节点,就是最后一个公有的结点了,即为最近公共祖先。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode .原创 2021-05-06 13:25:02 · 237 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点(指针法)
浪漫相遇~ 你变成我,走过我走过的路。 我变成你,走过你走过的路。 然后我们便相遇了.. 思路:用两个指针分别指向A,B的头结点,然后循环遍历链表,当A遍历完后将其指向B的头结点,B遍历完后将其指向A的头结点。 当我们走完各自的路 重新回到对方最初的地方 如果我们的缘分不是两条平行的线 那么一定会在第一次有交集的地方重新相遇 code class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode原创 2021-05-05 13:51:47 · 120 阅读 · 0 评论 -
剑指 Offer 65. 不用加减乘除做加法
刷爆Leetcode剑指offer第一天 思路:见图解 class Solution { public: int add(int a, int b) { // 后续用a表示非进位和,b表示进位,当进位为0,则表示计算结束 return b == 0 ? a : add(a^b, (unsigned int)(a&b) << 1); } }; ...原创 2021-05-05 13:27:29 · 99 阅读 · 0 评论
分享