- 博客(23)
- 收藏
- 关注
原创 java小知识点记录「个人整理」
1、contains字符串: String s = "AbCdEfG"; String str1 = "AbC"; String str2 = "ACE"; //包含 if(s.contains(str1)) { System.out.println("true1"); }else { System.out.println("false1"); } //不包含 if(s.contains(str2)) { System.out.printl
2020-05-23 23:33:13 252
原创 位运算解决子集问题
题目来源:力扣(LeetCode)思路来源LeetCode 78. 子集题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路简述用 0 和 1 来代表每位数选还是不选,对于三个数字的子集个数, 就是从 0 到 111 即(1000 - 1)的个数, 判断每位数是否是 1 ,判断
2020-06-09 14:33:08 347
原创 「取余」与「取模」以及「同余定理」
记 LeetCode 的一道题目:974. 和可被 K 整除的子数组因为之前做过类似的题目 560. 和为K的子数组 ,所以想到用 「前缀和 」解决, 这个题解的主要目的是对 「取余」与「取模」进行记录,所以 前缀和 的用法就先不写了取余 取模 同余定理首先要了解取余和取模,他们的结果可能是不同的;计算方法相同:对于整型数a,b来说,取模运算或者求余运算的方法都是:1.求 整数商: c = a / b;(它的正负导致结果的不同)2.计算模或者余数: r = a - c * b对取余和取
2020-05-27 22:27:41 1336
原创 位运算小技巧【奇偶位交换】
来源:力扣(LeetCode)链接:面试题 05.07. 配对交换题目配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。示例1:输入:num = 2(或者0b10)输出 1 (或者 0b01)示例2:输入:num = 3输出:3提示:num的范围在[0, 2^30 - 1]之间,不会发生整数溢出。知识点: 偶数位为1,奇数位为00xaaaaaaaa = 10101010101010101
2020-05-21 20:58:56 535
原创 快速幂的初步认识
前言:今天做了一道题,可以用快速幂很好地实现,因为初次接触快速幂,刚开始比较懵圈,现在理解了一下,记录一下小白的心路历程。————————bui~~快速幂首先快速幂是什么呢,通俗来说,就是利用位运算实现一个数的 n 次幂举例:以 a 的 10 次幂为例如果通过连乘来求,则需要 10 次运算, 而通过快速幂,我们只需要运算 4 次,也就是二进制位数次的运算但是这是怎么算的呢?其实我刚开始有些疑惑,这里说一下:首先,要知道幂次的二进制有什么含义,从上面的例子可以看到当二进制的当前位为 0
2020-05-09 15:49:21 155
原创 三分钟了解二分查找的应用
小故事小乔在[0, 1, 3, 4, 6, 8, 9 ,10]的八个数字中想了一个,最多给你三次机会,她会告诉你:你猜的数字是大了还是小了,你能猜到吗?小乔可能长这样:情景一:LOOK:正着猜两个吧,0 和 1...
2020-05-01 21:37:12 261
原创 [消失的数字] 还能用位运算解决?
来源:力扣(LeetCode)链接:面试题 17.04. 消失的数字题目数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?注意:本题相对书上原题稍作改动输入:[3,0,1]输出:2输入:[9,6,4,2,3,5,7,0,1]输出:8题目解析首先了解题目大意:0 — n 中少了一个数字,让我们求出我现...
2020-04-30 17:47:29 288
原创 初步认识java中的移位运算符
来源:力扣(LeetCode)链接:面试题 05.01. 插入有关移位运算符左移运算符:<<不区分正负数,左移之后在右边补0, 相当于num乘以2public class test { public static void main(String[] args) { int A = 8; System.out.println("A : " + Integer....
2020-04-29 22:43:50 167
原创 数组中有两个数字仅出现一次(神奇的位运算)
来源:力扣(LeetCode)链接:面试题56 - I. 数组中数字出现的次数题目一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]输入:nums = [1,2,10,4,1,4,3,3]输出:[2,...
2020-04-28 11:26:17 315
原创 只出现一次的数字(位运算java)
来源:力扣(LeetCode)链接:136. 只出现一次的数字题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4题目解析首先,我们可以想到这个题目可以通过使用哈希表计数...
2020-04-28 09:41:13 328
原创 有序数组-两数之和
来源:力扣(LeetCode)链接:167.两数之和 || 输入有序数组题目给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个...
2020-04-27 13:46:38 317
原创 二叉树的遍历:先序遍历,中序遍历,后序遍历(java)
来源:力扣(LeetCode)链接:144.前序遍历、94.中序遍历、145.后序遍历概念:首先,我们结合图形了解一下他们的原理前序遍历:即先序遍历(Pre-order),指按照根左右的顺序沿一定路径经过路径上所有的结点。在二叉树中,先根后左再右。巧记:根左右。中序遍历:中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游。在二叉树中,中序遍历首先遍历左子树,然后访问根结点,最...
2020-04-26 21:15:23 761
原创 位运算解决:两字符串是否有重合部分
声明:小白总结,本意是记录自己的思路,不过希望能帮助别人,那就更好啦,若发现问题,欢迎指正,感谢!!来源:力扣(LeetCode)链接:318.最大单词长度乘积题目给定一个字符串数组 words找到 length(word[i]) * length(word[j]) 的最大值并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。输入:...
2020-04-24 10:29:59 1139
原创 用二分法解决【寻找重复数】问题
声明:小白总结,本意是记录自己的思路,不过希望能帮助别人,那就更好啦,若发现问题,欢迎指正,感谢!!来源:力扣(LeetCode)链接:287.寻找重复数题目给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n)可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。输入: [1,3,4,2,2]输出: 2输入: [3,...
2020-04-22 14:22:59 1078
原创 初步认识二分查找[小汇总]
声明:小白总结,本意是记录自己的思路,不过希望能帮助别人,那就更好啦,若发现问题,欢迎指正,感谢!!来源:力扣(LeetCode)链接:704.二分查找题目:二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12]...
2020-04-21 18:27:40 214
原创 用DFS解决【200.岛屿数量】
来源:力扣(LeetCode)链接:200.岛屿数量题目给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:11110110101100000000输出: 1输入:11000110000010000...
2020-04-20 17:24:49 133
原创 位运算解决【汉明距离】
来源:力扣(LeetCode)链接:461.汉明距离题目上面的箭头指出了对应二进制位不同的位置。两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ...
2020-04-19 13:31:10 199
原创 位运算解决2的幂、4的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。输入: 1输出: true解释: 20 = 1输入: 16输出: true解释: 24 = 16输入: 218输出: false从下方的图中发现一些有关2的幂的二进制数的特点:可以看到,2的幂的二进制数除第一位是1,其余各个位数均为0;并且,2的幂值减一的二进制数每一位数均为1;然后要谈到符号‘&’,也...
2020-04-19 13:02:56 325
原创 用双指针解决“盛最多水的容器”
来源:力扣(LeetCode)链接:11.盛最多水的容器题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入:[1,8,6,2,5,4...
2020-04-18 11:22:26 210
原创 【LeetCode 55】用(贪心?)解决跳跃游戏
来源:力扣(LeetCode)链接:55.跳跃游戏题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1...
2020-04-17 11:56:31 183
原创 用动态规划解决“编辑距离”
来源:力扣(LeetCode)链接:72.编辑距离题目给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符题目分析将一个字符串通过“增,删,替换”这三种操作,使其与另一字符串相同,我们设置一个二维数组,dp[m][n],其中m指word1的前m个字母,...
2020-04-10 16:17:10 151
原创 【动态规划】用一维和二维解决不同路径
来源:力扣(LeetCode)链接:62.不同路径不同路径题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?首先,动态规划的核心是什么呢?通俗来说,就是记录已经解决过的子问题的解。题目分析题目要找到达右下角的路...
2020-04-10 15:05:31 409
原创 (DFS)机器人的运动范围
来源:力扣(LeetCode)链接:面试题13.机器人的运动范围题目地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方...
2020-04-10 11:22:16 203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人