![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣
一只努力的蜗牛
这个作者很懒,什么都没留下…
展开
-
swap函数
java对基本类型的传递不支持引用传递即public static void main(String[] args){ int a = 1, b=2; swap(a,b); System.out.print("a="+ a + ", b="+ b);}void swap(int a, int b){ int temp = a; a = b; b = temp;}这样只是把实参的值赋值给了形参,再对形参进行改变,并不能改变实参。可通过数组解决p原创 2021-09-15 11:57:56 · 129 阅读 · 0 评论 -
415字符串相加
原创 2021-09-08 23:27:13 · 76 阅读 · 0 评论 -
贪心算法(取局部最优)
原创 2021-06-11 17:56:07 · 429 阅读 · 0 评论 -
455. 分发饼干 排序+贪心算法
class Solution: #python def findContentChildren(self, g: List[int], s: List[int]) -> int: g.sort() s.sort() count=0 i=j=0 while i<len(g) and j<len(s): if g[i]<=s[j]: i+=1.原创 2021-06-07 22:12:36 · 99 阅读 · 0 评论 -
面试题 16.02. 单词频率 哈希表
class WordsFrequency {private HashMap<String,Integer> map=new HashMap<>();// private HashMap<String, Integer> map = new HashMap<>(); public WordsFrequency(String[] book) { for(String str :book){ map.put(s.原创 2021-06-04 00:28:02 · 89 阅读 · 0 评论 -
231. 2 的幂
//解法1 c> 给大家举个列子: > > 8的二进制是1000 7的二进制是0111> > 1000 > > 0111> > &运算中1&1=1,1&0=0,0&0=0> > 并且按位置对应运算的,也就是说第一位和第一位运算,其他类推> > 所以可以得出0000,故输出的是0。bool isPowerOfTwo(int n){.原创 2021-05-31 00:36:23 · 58 阅读 · 1 评论 -
<< >>
左移时不管正负,低位补0正数:r = 20 << 220的二进制补码:0001 0100向左移动两位后:0101 0000结果:r = 80负数:r = -20 << 2-20 的二进制原码 :1001 0100-20 的二进制反码 :1110 1011-20 的二进制补码 :1110 1100左移两位后的补码:1011 0000反码:1010 1111原码:1101 0000结果:r = -80表示右移,如果该数为正,则高位补0,若为负数,则高位补1;原创 2021-05-27 22:54:14 · 113 阅读 · 0 评论 -
448. 找到所有数组中消失的数字
让数组中出现的值取对应下标的相反数代码class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { List<Integer> results = new ArrayList<>(); int n=nums.length; for(int num=0;num<n;num++){ if(nums[Math.a.原创 2021-05-22 16:42:07 · 52 阅读 · 1 评论 -
string的一些方法 1859. 将句子排序
class Solution { public String sortSentence(String s) { String[] strs =s.split(" "); String [] res = new String[strs.length];for (String str:strs){ int num = str.charAt(str.length()-1)-'0'-1; res[num]=str.substring(0,str..原创 2021-05-19 22:30:29 · 117 阅读 · 0 评论 -
1844. 将所有数字用字符替换
先将字符串拆分到字符串类型的数组,然后对循环对数字进行操作,需要注意的是因为数组是字符串类型的,所以要对(cha[i-1]+(cha[i]-‘0’) 进行类型转换,最后return在将字符数组转化为字符串时,用new String(char value[])更好。代码class Solution { public String replaceDigits(String s) { char [] cha=s.toCharArray(); //拆分 for(int..原创 2021-05-12 11:40:37 · 244 阅读 · 0 评论 -
213. 打家劫舍 II
先说思路,既然首尾不能同时用,就把收尾分开,一个数组有头一个数组有尾,然后就是普通的打家劫舍进行两次,再比较这两个的大小。至于动态规划,就是比较两端和中间数的大小,将大的问题分解成小的问题。https://blog.csdn.net/weixin_48680010/article/details/116585115?spm=1001.2014.3001.5502 可以看下这个class Solution { public int rob(int[] nums) { //边界情况.原创 2021-05-10 12:57:50 · 86 阅读 · 0 评论 -
动态规划
动态规划即将大问题转换成相应的小问题通过解决小问题进而解决大问题。什么时候用动态规划呢:1.最优化原理(最优子结构性质)最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。图2例如图2中,若路线I和J是A到C的最优路径,则根据最优化原理,路线J必是从B到C的最优路线。这可用反证法证明:假设有另一路径J’是B到C的最优原创 2021-05-10 09:33:59 · 1579 阅读 · 0 评论 -
1641. 统计字典序元音字符串的数目(动态规划)
n=1a e i o u1 1 1 1 1n=2aa ae ai ao au 5ee ei eo eu 4ii io iu 3oo ou 2uu 1n=315 10 6 3 1从这里其实我们可以找到规律,n=2的时候a的值即为n=1时所有值的一个加和,而eiou则为其前一个字母当前n的值减去上一个n的值即可分类讨论class Solution { public in..原创 2021-05-08 11:48:29 · 244 阅读 · 0 评论 -
344. 反转字符串
第一种方法是异或方法详情见 https://blog.csdn.net/weixin_48680010/article/details/116517426,第二种就比较容易想了就是利用一个中间变量,但是并没有占用辅助空间代码class Solution { public void reverseString(char[] s) { for(int i=0;i<s.length/2;i++){ int j= s.length-1-i;原创 2021-05-08 09:14:27 · 278 阅读 · 0 评论 -
异或
异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。异或略称为XOR、EO原创 2021-05-08 09:12:31 · 3227 阅读 · 0 评论 -
59. 螺旋矩阵 II
class Solution { public int[][] generateMatrix(int n) { int[][] ans=new int[n][n]; cricle(0,0,n-1,n-1,1,ans); return ans;} void cricle(int x1,int y1,int x2,int y2,int start, int[][]ans){ if(x2<x1 || y2<y1) { return ;.原创 2021-04-25 23:15:38 · 61 阅读 · 0 评论 -
9. 回文数
先把等于0 小于0的情况列出来,再判读大于0的情况:比如121,先得到最后一位1再乘以10的2(count-i)次方,循环下去即可得到反转的数,再进行比较就好了代码```javaclass Solution { public boolean isPalindrome(int x) {//l是保存最初的xx int l=0; l=x;//y是用来求x的位数的 int y=0; y=x; int count=0; int sum=0;//判断小于零的原创 2021-04-24 23:17:41 · 45 阅读 · 0 评论 -
78. 子集,面试题 08.04. 幂集
刚开始刷语法题,真的无从下手,即使看了题解也要看半天,好在看懂了一种方法class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result=new ArrayList<>(); //创建一个result数组 //添加一个空子集 result.add(new ArrayLis原创 2021-04-24 00:10:16 · 65 阅读 · 0 评论 -
16.0.1 交换数字
两种思路1.class Solution { public int[] swapNumbers(int[] numbers) { numbers[0]+=numbers[1]; numbers[1]=numbers[0]-numbers[1]; numbers[0]=numbers[0]-numbers[1]; return numbers; }}比如a=1,b=2。要输出a=2,b=1,先把b加到a上即a1=a+b,原创 2021-04-23 00:18:20 · 47 阅读 · 0 评论 -
保持城际天际线
class Solution { public int maxIncreaseKeepingSkyline(int[][] grid) { int max_x=0; int max_y=0; int len=grid.length; int[] mx=new int[len]; int []my=new int[len]; //y for(int i=0;i<.原创 2021-04-22 23:30:28 · 63 阅读 · 0 评论 -
完美数
class Solution { public boolean checkPerfectNumber(int num) { int count=0; if(num==1){ return false; } for(int i=2;i*i<num;i++){ if(num%i==0){ count+=i+num/i; } .原创 2021-04-20 10:38:19 · 62 阅读 · 0 评论 -
1773. 统计匹配检索规则的物品数量
刚开始的思路是分类,如果是类型的话就遍历一遍,颜色在遍历一遍等,但是太复杂了,相同的东西写了好几遍,直接找一个标志的值就好,还有就是数组中有数组直接get().get()就可以遍历了。class Solution { public int countMatches(List<List<String>> items, String ruleKey, String ruleValue) { int a=-1; int count=0; .原创 2021-03-21 00:06:41 · 62 阅读 · 0 评论 -
1769. 移动所有球到每个盒子所需的最小操作数
题目的意思是,如果其他箱子有球就计算移到第i个盒子需要走的步数。第一个只需要考虑右边的元素,从第二个开始,就需要考虑左边的元素了,比如第二个元素需要在第一个元素leaft是0的条件下加一,相应的,当i一直后移就需要加相应数目左边元素为1的数目,左边同理,i每次加一,可以看为right全部向左移动一次,需要用原来的count减right的值。class Solution { public int[] minOperations(String boxes) { int right=.原创 2021-03-20 00:59:18 · 96 阅读 · 0 评论 -
力扣21 合并两个有序链表
如果l1,l2为空时则返回另一个链表即可。当其不为空,当l1的值小于l2的值,则比较l1.next与l2的大小同时返回l1当前值,L2同理```java/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * .原创 2021-03-06 11:00:08 · 46 阅读 · 0 评论 -
1689. 十-二进制数的最少数目(substring(),charAt(),ToCharArray())
substring()截取父字符串的某一部分public String substring(int beginIndex, int endIndex)第一个参数int为开始的索引,对应String数字中的开始位置,第二个参数是截止的索引位置,对应String中的结束位置charAt() 方法和charCodeAt () 方法https://blog.csdn.net/shandong_chu/article/details/5478651?ops_request_misc=%25257B%25原创 2021-02-17 22:18:26 · 81 阅读 · 0 评论 -
1684. 统计一致字符串的数目
TochararrayToCharArray( )的用法,将字符串对象中的字符转换为一个字符数组。详解释就是:字符串转换成字符数组后,每个字符的ASC码与字符T的ASC码进行二进制异或运算。最后把结果转换回字符。举例说明:public class Test {public static void main(String args[]) {String Str = new String(“www.baidu.com”);System.out.print(“返回值 :” );System..原创 2021-02-10 00:23:56 · 85 阅读 · 1 评论 -
力扣978. 最长湍流子数组
刚看到的时候,我的思路是把这两种情况罗列出来,但是因为实在太繁琐,情况太多导致不成功。后来去题解中找灵感,发现可以用排除法来做,如果没有连续三个及以上的那么就一直count++,如果中途有比如 9 8 7三个数出现这种情况的时候count应该等于2.因为8 7 后面的数下面是要分析的,如果大于7下面会加1,就是有三个不一样的,但是湍流已经中断,要重新开始。class Solution { public int maxTurbulenceSize(int[] arr) { .原创 2021-02-08 23:08:16 · 48 阅读 · 0 评论