随笔分类 -  课程 / / 分治

摘要:一、题目 给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。 你可以假设所有输入数组都可以得到满足题目要求的结果。 二、思路 主要思路就是你会发现,奇数索引上规律是从大到小,偶数索引上规律也是从大到小,再次发现先对奇 阅读全文
posted @ 2023-03-09 22:04 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一、题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 二、思路 数组从左到右和从上到下都是升序的,如果从右上角出发开始遍历呢? 三、代码 public boolean se 阅读全文
posted @ 2023-03-05 16:40 ImreW 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一、题目 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数 二、思路 观察这个运算:n & (n−1),其运算结果恰为把 n 的二进制位中的最低位的 1变为 0 之后的结果。 三、代码 class Solution { public: int h 阅读全文
posted @ 2023-03-04 19:52 ImreW 阅读(4) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 二、思路 找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动 222 步,慢指针每次移动 111 步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中 阅读全文
posted @ 2023-03-03 16:59 ImreW 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一、题目 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 二、思路 由于构造出的二叉搜索树的中序遍历结果就是链表本身,因此我们可以将分治和中序遍历结合起来,减少时间复 阅读全文
posted @ 2023-03-02 21:33 ImreW 阅读(10) 评论(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 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一、题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 二、思路 数组达到有序需要的元素间的交换次数与逆序对个数有关系,也就是说交换次数越多逆序对个数越少。 到了这个地步基本可以猜出排序可能就是解题的方法了,那么常用的要 阅读全文
posted @ 2023-02-26 10:29 ImreW 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 二、思路 选择中间位置左边的数字作为根节点,则根节点的下标为 mid=(left+right), 阅读全文
posted @ 2023-02-24 12:03 ImreW 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一、题目 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。 二、思路 分治思路: 对于当前String s,历遍并将所有字符进行出现次数记录 重新历遍String,如果发现其出现次数少于k,以当前i前后分别再调用l 阅读全文
posted @ 2023-02-23 21:44 ImreW 阅读(16) 评论(0) 推荐(0) 编辑

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