自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 二分查找左右端点

代码public class Main { public static void main(String[] args) { int[] arr = {1,2,3,4,5,5,5,5,6,7,8}; int left = 0; int right = arr.length - 1; int target = 5; // 寻找左侧边界 while (left < right) {

2021-08-18 11:42:39 275

原创 回溯法模板

回溯法模板题目:求排列[1, 2, 3]的排列为[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]List<List<Integer>> paths;List<Integer> path;boolean[] used;public List<List<Integer>> permute(int[] nums) { int len = nums.l

2021-07-12 15:27:52 150

翻译 解决python中四舍五入出现的问题

解决python中四舍五入出现的问题解决python中四舍五入出现的问题解决办法解决python中四舍五入出现的问题当使用python中的round函数实现四舍五入的逻辑时,发现当小数位为5时,如果整数位为偶数时,则结果为偶数,如果整数位为奇数时,结果会变成奇数+1。>>> round(0.5)0>>> round(1.5)2>>>解决办法def round_half_up(n, decimals=0): multiplier

2021-05-31 20:40:19 426

原创 leetcode 502:IPO

题目描述假设 力扣(LeetCode)即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。给定若干个项目。对于每个项目 i,它都有一个纯利润 Pi,并且需要最小的资本 Ci 来启动相应的项目。最初,你有 W 资本。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。总而言之,从给定项目中选择最多 k

2021-04-11 18:13:22 131

原创 双指针(滑动窗口)的解题套路

题目描述给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 :输入:s: “cbaebabacd” p: “abc”输出:[0, 6]解释:起始索引等于 0 的子串是 “cba”, 它是 “abc” 的字母异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc”

2021-04-10 21:50:48 261 2

原创 N皇后问题

题目描述n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-queens解题思路N皇后为题可以使用回溯法求解,回溯法有三个基本组成部分,路径、选择列表和结束条件。当满足结束条件

2021-04-09 19:26:35 161

原创 二叉树的遍历(递归与非递归)

二叉树的遍历方式使用Java实现了二叉树的前序、中序、后序遍历的递归版本和非递归版本,以及层序遍历。代码实现public class Traversal { // 前序遍历递归 public static void preOrder(Node root) { if (root == null) { return; } System.out.print(root.value + " "); preOr

2021-04-08 22:09:25 122 1

原创 二叉树所有层中最多的节点个数和最大宽度

求二叉树所有层中最多的节点个数解题思路:根据题意可知,要想获得二叉树中每一层的节点个数,需要对二叉树进行层序遍历,并在层序遍历的过程中记录每一层具有多少个节点。因此可以在层序遍历每一个节点的时候为每个节点分配一个层数的记录。层序遍历的方法通常是使用队列进行,首先将头节点加入到队列中,如果头节点不为空,将队列中的第一个元素弹出,这个被弹出的元素的左子节点不为空则将左子节点加入到队列中;如果右节点不为空则将右子节点加入到队列中。但是层序遍历的过程中并没有统计每一个节点到底属于哪一层的信息,因此需要将节点与节点

2021-04-08 17:51:19 1527 1

原创 leetcode 76:最小覆盖子串

题目描述给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-window-substring例如:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”解题思路可以使用滑动窗口(或者称为双指

2021-04-07 16:37:41 141

原创 leetcode 122: 买股票的最佳时机2

题目表述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii常规思路根据题目描述,只能够先买入后卖出,而且可以在同一天内买入并卖出这支股票。因此我们考虑在低价

2021-04-06 12:47:11 97

原创 剑指offer:top k问题

top k问题求数组中最小的k个数。解法求解top k问题的方法有很多种,这里主要介绍其中经典的两种,一种是基于堆的方法,另一种是利用快速排序中的partition过程的方法。解法1基于快速排序partition过程的方法:partition过程为每次选择一个数,查看数组中元素,如果数组中的元素比这个数小,放到数组左边,如果数组中元素比这个数大则放到数组的右边,最后将这个数和小于区域的最后一个位置进行交换,返回这个位置,则这个位置的左边为小于该数的所有元素,右边为大于等于该数的所有元素。因此多次进

2021-04-04 19:29:19 137

原创 KMP算法

KMP算法KMP算法是一种高效的字符串匹配算法,传统的基于暴力匹配的字符串匹配算法的时间复杂度为O(M*N),而KMP算法通过在匹配过程中在子串引入前缀和后缀最大匹配长度,大大较少了字符串匹配的次数,时间复杂度为O(M+N)。字符串前缀后缀最大匹配长度数组next的获取KMP算法的其中一个关键就是获取子串每个位置的前缀后缀最大匹配长度,假设子串的s2为"abbsabbecabbsabbdf",规定next[0] = -1next[1] = 0next[2]表示数组第三个元素之前即s2[:2]的前

2021-03-27 22:12:36 147

原创 Java实现8种排序算法

Java实现常用排序算法排序算法(java实现)1.冒泡排序2.选择排序3.插入排序4.快速排序5.归并排序6.堆排序7.桶排序8.基数排序排序算法(java实现)使用Java实现了八种排序算法1.冒泡排序// 冒泡排序public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } // 总共需要进行n-1轮排序,每轮排序将最大的值放到数

2021-03-21 18:06:54 471 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除