
算法
文章平均质量分 69
小白白007
这个作者很懒,什么都没留下…
展开
-
leetcode 每日刷题记录--540. 有序数组中的单一元素
leetcode 刷题记录540. 有序数组中的单一元素给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10class Solution { public int sing原创 2022-02-14 11:23:56 · 384 阅读 · 0 评论 -
leetcode刷题记录--数据结构;深度优先搜索算法;二叉树;平衡树;1020. 飞地的数量;1669. 合并两个链表;108. 将有序数组转换为二叉搜索树
1020. 飞地的数量难度中等131给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。示例 1:输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]输出:3解释:有三个 1 被 0 包围。一个 1 没有被包围,因为它原创 2022-02-12 18:05:26 · 239 阅读 · 0 评论 -
leetcode每日一题--1447. 最简分数
leetcode每日一题1447. 最简分数给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。示例 1:输入:n = 2输出:["1/2"]解释:"1/2" 是唯一一个分母小于等于 2 的最简分数。示例 2:输入:n = 3输出:["1/2","1/3","2/3"]示例 3:输入:n = 4输出:["1/2","1/3","1/4","2/3","3/4"]解释:"2/4" 不是最简分数原创 2022-02-10 10:37:28 · 200 阅读 · 0 评论 -
Leetcode algorithm question brushing record--Binary search algorithm
Leetcode algorithm question brushing recordBinary search algorithm704. 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums =原创 2022-01-27 14:48:02 · 122 阅读 · 0 评论 -
leetcode Brush question record--Greedy Algorithm--55. Jumping game
leetcode Brush question recordGreedy AlgorithmCore concept:Step 1: start from an initial solution;Step 2: adopt the iterative process. When you can move one step towards the goal, get a decomposition according to the local optimal strategy to reduce th原创 2022-01-25 18:19:43 · 320 阅读 · 0 评论 -
leetcode刷题记录--滑动窗口;排序;数学计算;找规律;1838. 最高频元素的频数;172. 阶乘后的零
练习题1838. 最高频元素的频数元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。示例原创 2022-01-24 18:06:52 · 106 阅读 · 0 评论 -
leetcode练习题--记忆化搜索;字符串;1358. 包含所有三种字符的子字符串数目
练习题1358. 包含所有三种字符的子字符串数目给你一个字符串 s ,它只包含三种字符 a, b 和 c 。请你返回 a,b 和 c 都 至少 出现过一次的子字符串数目。示例 1:输入:s = “abcabc”输出:10解释:包含 a,b 和 c 各至少一次的子字符串为 “abc”, “abca”, “abcab”, “abcabc”, “bca”, “bcab”, “bcabc”, “cab”, “cabc” 和 “abc” (相同字符串算多次)。示例 2:输入:s = “aaacb”原创 2022-01-24 16:25:17 · 5789 阅读 · 0 评论 -
leetcode练习题--判断平衡二叉树;avl树;面试题 04.04. 检查平衡性
练习题面试题 04.04. 检查平衡性实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ 9 20/ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]1/ 2 2/ 3 3/ 4 4返回 false 。/** * Definition for a binary原创 2022-01-24 16:24:18 · 182 阅读 · 0 评论 -
leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树
leetcode每日一题ps:今天的每日一题没意思,简单的模拟,自己换一道面试题 08.04. 幂集幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]题解:class Solution { List<List<Integer>> list; publi原创 2022-01-22 15:32:48 · 513 阅读 · 0 评论 -
leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题539. 最小时间差示例 1:输入:timePoints = [“23:59”,“00:00”]输出:1示例 2:输入:timePoints = [“00:00”,“23:59”,“00:00”]输出:0class Solution { public int findMinDifference(List<String> time) { int len = time.size(); List<Integer原创 2022-01-18 14:50:08 · 805 阅读 · 0 评论 -
算法学习--并查集的学习(基础知识概念)(深搜广搜算法对比);547. 省份数量
并查集练习基础知识概念理解:并查集(Dijoint Set)属于一种跳跃式数据结构,也就是说你不会就是你压根都不会,你要是一会的就会用就行了,它没有太多让你在上面进行发展的空间,或者是需要像动态规划或者是各种搜索一样有非常强的随机应变和在上面进行自由发挥的空间。所以我们主要就是把它的情景和它的实现代码进行学习掌握。掌握代码模版直接套上去用即可。使用场景:它解决的场景就是组团和配对的问题,也就是说在有些现实的问题中,你需要很快地判断这两个个体是不是在一个集合中,这么讲有点抽象,很多时候就是说你和他是原创 2022-01-15 17:52:37 · 287 阅读 · 0 评论 -
leetcode刷题记录--搜索;模拟;数学推导;1716. 计算力扣银行的钱;48. 旋转图像剑指 ;Offer 29. 顺时针打印矩阵
leetcode每日一题1716. 计算力扣银行的钱Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。示例 1:输入:n = 4输出:10解释:第 4 天后,总额为 1 + 2 + 3 + 4 = 10 。示例 2:输入:n = 10输出:37解释:第原创 2022-01-15 15:05:26 · 326 阅读 · 0 评论 -
leetcode 每日一题--排序算法;多路归并;优先队列;373. 查找和最小的K对数字;23. 合并K个升序链表;148. 排序链表;912. 排序数组
leetcode 每日一题373. 查找和最小的K对数字给定两个以升序排列的整数数组 nums1 和 nums2 , 以及一个整数 k 。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。示例 1:输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3输出: [1,2],[1,4],[1,6]解释: 返回序列中的前 3 对数:[1原创 2022-01-14 16:34:51 · 386 阅读 · 0 评论 -
图论搜索/模拟--leetcode:747. 至少是其他数字两倍的最大数;2. 两数相加
leetcode 每日一题747. 至少是其他数字两倍的最大数给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。示例 1:输入:nums = [3,6,1,0]输出:1解释:6 是最大的整数,对于数组中的其他整数,6 大于数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。示例 2:输入:nums = [1,2,3,4]输出:-1解释原创 2022-01-13 14:58:32 · 100 阅读 · 0 评论 -
关于bfs(广度优先搜索算法)和dfs(深度优先搜索算法)--leetcode题:1036. 逃离大迷宫;112. 路径总和;113. 路径总和 II;102. 二叉树的层序遍历;200. 岛屿数量
leetcode 每日一题1036. 逃离大迷宫在一个 106 x 106 的网格中,每个网格上方格的坐标为 (x, y) 。现在从源方格 source = [sx, sy] 开始出发,意图赶往目标方格 target = [tx, ty] 。数组 blocked 是封锁的方格列表,其中每个 blocked[i] = [xi, yi] 表示坐标为 (xi, yi) 的方格是禁止通行的。每次移动,都可以走到网格中在四个方向上相邻的方格,只要该方格 不 在给出的封锁列表 blocked 上。同时,不允许走原创 2022-01-12 18:21:13 · 405 阅读 · 0 评论 -
力扣刷题(子序列问题)--1713. 得到子序列的最少操作次数;1143. 最长公共子序列
力扣刷题:1713. 得到子序列的最少操作次数题目:给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。每一次操作中,你可以在 arr 的任意位置插入任一整数。比方说,如果 arr = [1,4,1,2] ,那么你可以在中间添加 3 得到 [1,4,3,1,2] 。你可以在数组最开始或最后面添加整数。请你返回 最少 操作次数,使得 target 成为 arr 的一个子序列。一个数组的 子序列 指的是删除原数组的某些元素(可能一个元素原创 2021-07-26 10:52:23 · 714 阅读 · 0 评论 -
2021年4月22日--每日一题--矩形区域不超过 K 的最大数值和
每日一题题目363. 矩形区域不超过 K 的最大数值和给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。输入:matrix = [[2,2,-1]], k = 3原创 2021-04-23 13:56:42 · 179 阅读 · 0 评论 -
贪心算法的学习;leetcode--334. 递增的三元子序列;11. 盛最多水的容器;646. 最长数对链
leetcode每日一题:334. 递增的三元子序列给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意示例 2:输入:num原创 2022-01-12 14:53:41 · 114 阅读 · 0 评论 -
对数器
import java.util.Arrays;/** * @program: javase * @description: 对数器 * @Author: 小白白 * @create: 2019/12/20 - 17:16 **/public class Logarithmic { public static int[] copyArray(int[] arr){ ...原创 2019-12-20 17:36:07 · 134 阅读 · 0 评论 -
几种排序方式
排序方式(后期还会添加)冒泡排序private static int [] Bubbling(int []arr){ for(int i = 0;i<arr.length;i++){ for(int j = i+1 ;j<arr.length;j++){ swap(arr, i, j); } } return arr;}public stati...原创 2019-10-25 11:23:29 · 227 阅读 · 0 评论 -
求阶乘
求20的阶乘分之一之和/** * @program: javase * @description: 求阶乘 * @Author: 小白白 * @create: 2019/12/20 - 13:45 **/public class Factorial { public static void main(String[] args) { double a = 0;...原创 2019-12-20 14:18:12 · 178 阅读 · 0 评论 -
找到所有数组中消失的数字
找到所有数组中消失的数字题目描述:给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。思路解析:1.遍历这个元素(for),然后数组里的元素去交...原创 2019-10-24 17:42:01 · 222 阅读 · 0 评论 -
“气球”的最大数量
力扣网1189.“气球”的最大数量题目描述:给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。解题思路:1.要求字符串中有多少个balloon,所以是取最小值2.遍历字符串,将其拆分成单个字符因为3.分解之后利用math....原创 2019-10-23 17:36:13 · 455 阅读 · 1 评论 -
剪格子
剪格子算法如图p1.jpg所示,3 x 3 的格子中填写了一些整数。我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60。本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。如果无法分割,则输出 0程序输入输出格式要求:程序先读入两个整数 ...原创 2019-10-17 09:27:57 · 178 阅读 · 0 评论 -
利用"冒泡排序"解决数奇偶的奇偶分类
利用"冒泡排序"解决数组的奇偶分类题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变public class Solution { public void reOrderArray(int [] array) { int temp; for(int ...原创 2019-10-13 21:26:04 · 589 阅读 · 0 评论 -
链表例题
*输出链表的节点和链表反转例一:输入一个链表,输出该链表中倒数第k个结点。思路:1.判断链表是否为空2.判断k是否超出了链表的长度3.要将这个链表进行遍历4.定义一个新的链表接收(只接收k个数据)5.将两个链表进行遍历,当第二个链表为null的时候,就是第一个链表的倒数k个数据代码如下:public class Solution { public ListNode F...原创 2019-10-16 14:49:51 · 170 阅读 · 0 评论 -
约瑟夫算法
约瑟夫 经典算法问题描述:N个人围成一圈,从第一个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到所有人出圈。输出最后一个人的编号(模拟此过程,输出出圈的人的序号)思路:1.利用枚举和集合,(本来是想用C去写的,但是C的数组长度可变的功能,苏哦一选择了java的集合)2.将所有人数存入到集合中,然后将这个集合进行遍历3.寻找规律,找出到K时所与i应下...原创 2019-10-14 23:24:09 · 815 阅读 · 0 评论 -
递归算法题归纳
利用递归的算法题总结例一:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。(n<=39)经典的递归应用,注意考虑周全,当传入的n的值为0或者为1的时候,返回的数值是多少`public class Solution { public int Fibonacci(int n) { int []a = new ...原创 2019-10-13 21:54:10 · 348 阅读 · 1 评论