![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java算法学习基于leetcode
yoletPig
写博客让我更清晰表达
展开
-
位运算的奇巧淫技(一)
位运算的奇巧淫技(一)本文主要列举与、或、异或、等位运算符的一些奇巧淫技,顺便把用到这些技巧的算法题列出来讲解。异或// 异或底层原理,相同为0,不相同为1.1 ^ 1 = 01 ^ 0 = 1// 所以有任意数异或0为本身,相同两个数异或为0.a ^ 0 = aa ^ a = 0// 根据上面的公式得a ^ a ^ b = b下面看道用到此技巧的算法题目。只出现一次的数字(easy)1、任何数和 0 做异或运算,结果仍然是原来的数,即 a ^ 0 = a。2、任何数原创 2020-08-30 22:13:42 · 475 阅读 · 0 评论 -
Leetcode 简单题 报数 解题方法(java)
题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。...原创 2019-05-02 12:55:41 · 324 阅读 · 0 评论 -
java算法学习笔记之整数翻转
java算法学习笔记基于LeeCode题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31-1]。请根据这个假设,如果反转后整数...原创 2019-04-20 14:18:45 · 163 阅读 · 0 评论 -
java LeetCode 最后一个单词
我的思路,从后面开始,每次拿一个字符,判断是不是字母,如果是num++;不是就index–;找到字母后,如果字母的下一位是“ ”(空格) 就return num; public int lengthOfLastWord(String s) { String letter="qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM"...原创 2019-05-31 20:00:54 · 131 阅读 · 0 评论 -
java LeetCode 加一(plusOne)
我的思路:从数组末端开始,如果digits[i]==9 就将它置 0 如果不等于9,就加1,有可能数组里面的数字都是9,那样就要new 一个新的数组 长度比原来的数组多一就行,再将第一个元素赋值为1; public int[] plusOne(int[] digits) { int i=digits.length-1; while(i>=0) { i...原创 2019-05-31 20:26:07 · 300 阅读 · 0 评论 -
java LeetCode x的平方根
思路:二分法,递归求解,递归出口为(midmid>x&&midmid<x+1)解释一下,因为题目要求返回一个整数,所以在mid的平方在x~x+1处就行,如果mid*mid>x 说明 x的平方根肯定在left ~mid之间,反之则在mid ~ right 之间; public int mySqrt(int x) { return sqrt(x,...原创 2019-06-01 11:04:02 · 476 阅读 · 0 评论 -
java LeetCode 爬楼梯(climbStairs)
思路:假设我们在第i阶 那我们上到第i阶的方法就是 在(i-1)阶跨一步+上(i-2)阶跨一步;所以我们就有了递归公式 climbStairs(i)= climbStairs(i-1)+ climbStairs(i-2);直接写递归的话时间复杂度过高,所以我们用记忆化递归,即用数组存起每一阶的方法数; public int climbStairs(int n) { int[]...原创 2019-06-01 13:42:59 · 315 阅读 · 0 评论 -
java LeetCode(合并两个有序数组)
虽然这道题很简单,但其用到的思想,还是让我忍不住mark下来;这是我一开始的做法,想法很简单,合在一起,排下序就好;public void merge(int[] nums1, int m, int[] nums2, int n) { int i=0,j=0; for(i=m;i<m+n&&j<n;i++) { ...原创 2019-06-02 16:34:40 · 534 阅读 · 0 评论 -
java LeetCode(素数筛法)计数素数
分享一波素数筛法;O(n^2),在一堆数中,在外循环中从2开始循环到n,在内循环中除去i的倍数,遍历后剩下的就是素数; public int countPrimes(int n) { boolean[] arr = new boolean[n]; for(int i=2;i<arr.length;i++) { arr[i] = true; }...原创 2019-06-21 21:03:38 · 304 阅读 · 0 评论