随笔分类 -  课程 /

摘要:一、题目 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数 二、思路 观察这个运算:n & (n−1),其运算结果恰为把 n 的二进制位中的最低位的 1变为 0 之后的结果。 三、代码 class Solution { public: int h 阅读全文
posted @ 2023-03-04 19:52 ImreW 阅读(11) 评论(0) 推荐(0)
摘要:一、题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 二、思路 找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动 222 步,慢指针每次移动 111 步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中 阅读全文
posted @ 2023-03-03 16:59 ImreW 阅读(20) 评论(0) 推荐(0)
摘要:一、题目 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 二、思路 由于构造出的二叉搜索树的中序遍历结果就是链表本身,因此我们可以将分治和中序遍历结合起来,减少时间复 阅读全文
posted @ 2023-03-02 21:33 ImreW 阅读(21) 评论(0) 推荐(0)
摘要:一、题目 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 二、思路 3 / \ 9 20 / / \ 8 15 7 / \ 5 10 / 4 preorder = [3, 9, 阅读全文
posted @ 2023-03-01 12:24 ImreW 阅读(39) 评论(0) 推荐(0)
摘要:一、题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 二、思路 我觉得这道题目的思想是: 走完这一生 如果我和你在一起会变得更好,那我们就在一起,否则我就丢下你。 我回顾我最光辉的时刻就是和不同人在一起 阅读全文
posted @ 2023-02-28 10:26 ImreW 阅读(16) 评论(0) 推荐(0)
摘要:一、题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 二、思路 因为超过n/2的数组下标被众数占据了,这样我们随机挑选一个下标对应的元素并验证,有很大的概率能找到众 阅读全文
posted @ 2023-02-27 21:34 ImreW 阅读(28) 评论(0) 推荐(0)
摘要:一、题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 二、思路 数组达到有序需要的元素间的交换次数与逆序对个数有关系,也就是说交换次数越多逆序对个数越少。 到了这个地步基本可以猜出排序可能就是解题的方法了,那么常用的要 阅读全文
posted @ 2023-02-26 10:29 ImreW 阅读(31) 评论(0) 推荐(0)
摘要:一、题目 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 二、思路 创建一个哈希表,然后从左往右遍历数组。 检测哈希表中是否已存在当前字符,若存在,直接返回结果,若不存在,将当前字符加入哈希表,供后续判断使用即可。 阅读全文
posted @ 2023-02-25 13:51 ImreW 阅读(17) 评论(0) 推荐(0)
摘要:一、题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 二、思路 选择中间位置左边的数字作为根节点,则根节点的下标为 mid=(left+right), 阅读全文
posted @ 2023-02-24 12:03 ImreW 阅读(18) 评论(0) 推荐(0)
摘要:一、题目 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。 二、思路 分治思路: 对于当前String s,历遍并将所有字符进行出现次数记录 重新历遍String,如果发现其出现次数少于k,以当前i前后分别再调用l 阅读全文
posted @ 2023-02-23 21:44 ImreW 阅读(39) 评论(0) 推荐(0)
摘要:一、题目 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。 二、思路 规则定义: 设学生 阅读全文
posted @ 2023-02-22 18:39 ImreW 阅读(26) 评论(0) 推荐(0)
摘要:一、题目 假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入  阅读全文
posted @ 2023-02-21 14:13 ImreW 阅读(41) 评论(0) 推荐(0)
摘要:一、题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 二、思路 二分查找 注意考虑大小为1之类,所以开头是要可以left=right,这样就考虑了left和right,所以 阅读全文
posted @ 2023-02-20 15:03 ImreW 阅读(27) 评论(0) 推荐(0)
摘要:一、题目 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 二、代码 class Solution { public 阅读全文
posted @ 2023-01-02 19:21 ImreW 阅读(24) 评论(0) 推荐(0)
摘要:一、题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这 阅读全文
posted @ 2023-01-01 18:51 ImreW 阅读(37) 评论(0) 推荐(0)
摘要:一、题目 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 二、思路 遍历一次 hash 数组,统计奇数的个数,然后做一次减法即可。 三、代码 class Solution { p 阅读全文
posted @ 2022-12-31 19:02 ImreW 阅读(27) 评论(0) 推荐(0)
摘要:一、题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 二、思路 当前节点的值是其左子树的值的上界(最大值) 当前节点 阅读全文
posted @ 2022-12-29 15:34 ImreW 阅读(27) 评论(0) 推荐(0)
摘要:一、题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 二、思路 使用颜色标记节点的状态,新节点为白色,已访问的节点为灰色。 如果遇到的节点为白色,则将其标记为灰色,然后将其右子节点、自身、左子节点依次入栈。 如果遇到的节点为灰色,则将节点的值输出。 三、代码 class Solu 阅读全文
posted @ 2022-12-28 13:18 ImreW 阅读(24) 评论(0) 推荐(0)
摘要:一、题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 二、思路 构建双指针距离: 前指针 former 先向前走 k 步(结束后,双指针 former 和 latter 间相距 k 步)。 三、代码 class Solutio 阅读全文
posted @ 2022-12-19 09:26 ImreW 阅读(22) 评论(0) 推荐(0)
摘要:一、题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 二、思路 定位节点: 遍历链表,直到 head.val == val 时跳出,即可定位目标节点。修改引用: 设节点 cur 的前驱节点为 pre ,后继节点为 cur.next ;则执行 pr 阅读全文
posted @ 2022-12-18 13:25 ImreW 阅读(29) 评论(0) 推荐(0)