随笔分类 -  算法练习

左神的算法指南
摘要:前n个数字种的二进制数中的1的个数 问题重述: 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 示例 1: 输入: n = 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 示例 2: 输入: n = 5 输 阅读全文
posted @ 2022-03-19 10:14 foldn 阅读(71) 评论(0) 推荐(0) 编辑
摘要:二进制加法 问题重述: 给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "10" 输出: "101" 示例 2: 输入: a = "1010", b = "1011" 阅读全文
posted @ 2022-03-19 10:14 foldn 阅读(443) 评论(0) 推荐(0) 编辑
摘要:整数除法 问题重述: 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 '*'、除号 '/' 以及求余符号 '%' 。 注意: 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = - 阅读全文
posted @ 2022-03-19 10:14 foldn 阅读(539) 评论(0) 推荐(0) 编辑
摘要:找到搜索二叉树中的错误结点 问题重述: 一个二叉搜索树,其中的两个结点位置发生了互换,先给出二叉树的根节点,要求得到两个错误的结点 问题分析: 因为二叉搜索树的结构满足,当前节点大于左子节点小于右子结点,使用中序遍历的时候,得到的值是升序的,二叉树中的两个结点换了位置,那么一定会导致中序遍历得到的值 阅读全文
posted @ 2022-03-16 23:29 foldn 阅读(151) 评论(0) 推荐(0) 编辑
摘要:找到二叉树中的最大搜索二叉树(树形BP) 问题重述: 给定一颗二叉树的头节点root,已知其中所有结点的值都不一样,找到含有节点最多的搜索二叉子树 问题分析: 我们可以每一个结点进行判断,最后得到所有结点中最大的哪一个 解法: 树形BP(递归) 解题: 代码: public class Return 阅读全文
posted @ 2022-03-08 23:48 foldn 阅读(138) 评论(0) 推荐(0) 编辑
摘要:在二叉树中找到累加和为指定值的最长路径(前缀和) 问题重述: 给定一颗二叉树和一个整数 sum,求累加和为 sum 的最长路径长度。路径是指从某个节点往下,每次最多选择一个孩子节点或者不选所形成的节点链 问题分析: 求和为指定值的最长路径,我们可以把每一条路径看作一个数组,然后对他进行求指定值,使用 阅读全文
posted @ 2022-03-05 23:15 foldn 阅读(162) 评论(0) 推荐(0) 编辑
摘要:和为k的最大子数组长度(前缀和) 问题重述: 给定一个数组arr,该数组无序,每一个元素均为正数,在给定一个正整数k,求arr的所有子数组中所有元素相加和为k的最长子数组的长度 例如:arr = [1,2,1,1,1],k=3,累加和为3的最长子数组为[1,1,1],所以返回结果3 问题分析: 求最 阅读全文
posted @ 2022-03-05 23:15 foldn 阅读(213) 评论(0) 推荐(0) 编辑
摘要:和为 K 的子数组 问题重述: 给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的连续子数组的个数 示例 1: 输入:nums = [1,1,1], k = 2 输出:2 示例 2: 输入:nums = [1,2,3], k = 3 输出:2 提示: 1 <= nums 阅读全文
posted @ 2022-03-05 14:43 foldn 阅读(123) 评论(0) 推荐(0) 编辑
摘要:二叉树的最小深度(递归) 问题重述: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 **说明:**叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [ 阅读全文
posted @ 2022-02-27 13:18 foldn 阅读(262) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历 问题重述: 二叉树的遍历 问题分析: 解法: 递归、迭代 解题: 代码: 递归写法 //前序遍历 public List<Integer> preorder(TreeNode root,List<Integer> list){ if(root == null){ return list 阅读全文
posted @ 2022-02-26 14:36 foldn 阅读(39) 评论(0) 推荐(0) 编辑
摘要:将链表按照左右分区重新排列 问题重述: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要 阅读全文
posted @ 2022-02-23 19:00 foldn 阅读(65) 评论(0) 推荐(0) 编辑
摘要:合并两个有序列表 问题重述: 问题分析: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输 阅读全文
posted @ 2022-02-21 21:06 foldn 阅读(187) 评论(0) 推荐(0) 编辑
摘要:向有序环形单链表中插入新节点 问题重述: 一个有序的环形单链表,从头节点开始升序,同时由最后一个结点指回头节点,给定一个环形链表的头节点和一个数值num,创建一个数值为num的新节点,将该节点插入到环形单链表中,要求链表始终有序 问题分析: 这道题就是简单的遍历环形单链表,然后插入新节点,只需要考虑 阅读全文
posted @ 2022-02-21 18:18 foldn 阅读(208) 评论(0) 推荐(0) 编辑
摘要:链表的选择排序 问题重述: 给定一个无序单链表的头节点head,实现单链表的选择排序 要求:额外空间复杂度为O(1) 问题分析: 解法: 选择排序 解题: 代码: // 如果没有限定空间复杂度的话,可以直接将结点放进数组中,然后在数组中进行选择排序,排序完成后在将结点联结起来 /** * 实现链表的 阅读全文
posted @ 2022-02-21 16:31 foldn 阅读(359) 评论(0) 推荐(0) 编辑
摘要:删除重复值的结点 问题重述: 给定一个无序单链表的头节点head,删除其中值重复出现的结点 问题分析: 这道题要删除重复值的结点,我们可以想到哈希表,因为哈希表是无序不重复的,我们使用哈希表对值进行保存,后续加入的值如果已经在哈希表中存在了,就删除,否则就加入哈希表 解法: 哈希表,或者多次遍历 解 阅读全文
posted @ 2022-02-21 14:26 foldn 阅读(43) 评论(0) 推荐(0) 编辑
摘要:判断一个链表是否为回文序列 问题重述: 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 提示: 链 阅读全文
posted @ 2022-02-21 14:25 foldn 阅读(165) 评论(0) 推荐(0) 编辑
摘要:删除链表的中间节点 问题重述: 给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n = 1、2、3、4 和 阅读全文
posted @ 2022-02-21 14:25 foldn 阅读(315) 评论(0) 推荐(0) 编辑
摘要:删除链表的a/b处结点 问题重述: 给定链表的头节点head,整数a和b,实现删除位于a/b处节点的函数 例如: 链表:1-2-3-4-5,假设a/b的值为r 如果r等于0,不删除任何结点 如果r位于(0~1/5),删除结点1 如果r位于(1/5~2/5),删除结点2 如果r位于(2/5~3/5), 阅读全文
posted @ 2022-02-21 14:25 foldn 阅读(37) 评论(0) 推荐(0) 编辑
摘要:删除链表的倒数第k个结点 问题重述: 给你一个链表,删除链表的倒数第 k 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], k = 1 输出:[] 示例 3: 输入:head = 阅读全文
posted @ 2022-02-21 14:23 foldn 阅读(268) 评论(0) 推荐(0) 编辑
摘要:两个单链表相交的一系列问题 问题重述: 给定两个单链表,单链表可能有环,也可能没有环,给定两个链表的头节点,判断是否相交,如果相交就返回相交的第一个结点,如果不相交就返回null 问题分析: 这道问题要求判断两个单链表是否相交,首先,环状链表和非环状链表不可能相交(因为相交之后,两个链表的后续结点应 阅读全文
posted @ 2022-02-21 14:23 foldn 阅读(109) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示