算法
文章平均质量分 72
一盏红烛,一杯烧酒
慢慢摸索,逐步变强。
展开
-
高斯Hack算法
Gosper's Hack高斯Hack算法原创 2024-01-14 12:35:18 · 546 阅读 · 0 评论 -
存在重复元素
描述leetcode 原题方法一常规思路,遍历每一项,同时比较该项后的k个元素,计算与他们的绝对差值,如果满足返回true。若遍历完则返回false。public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { int len=nums.length,i,j; for(i=0;i<len;i++){ for(j=i+1;j<=i+k&&j<len;j++){原创 2020-08-21 20:24:57 · 115 阅读 · 0 评论 -
整数对应的二进制中1的个数
说明(java实现)例如5对应的二进制为101,故有两个1。方法一// 右移32次,每次和1进行与操作,判断最右位是不是为1。public int bitCount(int n){ int count=0,times=32; while(times>0){ count=count+(n&1); n>>>1; times--; } return count;}方法二// 若n不为0,则n中必有一位是1,n-1必有 一位从1变成0publi原创 2020-08-01 12:19:23 · 197 阅读 · 0 评论 -
数组中出现次数超过一半的数字
原题数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。leetcode 上的原题方法一由于是一半以上,所以排序后数组的中位数必定是我们所要的值。public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2];}结果:运行时长 2ms 内存消耗43.2MB。方法二通过HashMap 来临时存储,并且每次更新出现的最多次数以及对应的数字publ原创 2020-07-28 22:28:31 · 77 阅读 · 0 评论 -
获得比当前数大的最小二次幂数
例子当前为9,那么最小二次幂数就是16。当前为127,那么最小的二次幂数就是128。当前为4,那么最小的二次幂数就是4。我以往的做法我直接遍历个32次,从1到32,每次通过Math.pow()去计算然后比较不行// 假定n>0public static int getMinSecondary(int n){ if(n==1)return 1; for(int i=1;i<32;i++){ if(Math.pow(2,i-1)<n&&Math.po原创 2020-07-26 09:48:34 · 542 阅读 · 0 评论 -
找到成环链表的入环第一个节点
例题leetcode中的例题思路如果只是判断一个链表是否成环,我们常用的是快慢指针。即让一个指针一次迈一步,另一个指针一次迈两步。如果链路承欢,则两个指针最终是会相遇的。但是 怎么在这个基础上找到环路的开始节点呢。我们可以再跑一次,这次同步伐(都走一步),一个从头开始,一个从快慢指针相遇的地方开始。这次的相遇即为目标节点(我们要找的环路开始节点)证明如下:设根(a) 到环起点的距离为x,环起点(b)到链表尾部(d)的距离为y。快慢指针相遇的点(c)距离环起点的距离为r。根据快慢指针相遇原创 2020-07-18 18:32:50 · 556 阅读 · 1 评论 -
java 获得整数的各个位上的数
方法一最容易想到的就是除,然后取余,然后循环。int p=1000;List<Integer> list=new ArrayList<Integer>();while(p>9){ list.add(p%10); p=p/10;}list.add(p);是不是觉得,好像没别的了吧方法二int p=1234;String s=p+"";char chars[]=s.toCharArray();List<Integer> list=new原创 2020-07-18 17:37:15 · 510 阅读 · 0 评论 -
leetcode 切分数组
题目要求:给定一个整数数组 nums ,小李想将 nums 切割成若干个非空子数组,使得每个子数组最左边的数和最右边的数的最大公约数大于 1 。为了减少他的工作量,请求出最少可以切成多少个子数组。示例 1:输入:nums = [2,3,3,2,3,3]输出:2解释:最优切割为 [2,3,3,2] 和 [3,3] 。第一个子数组头尾数字的最大公约数为 2 ,第二个子数组头尾数字的最大公约数为 3 。示例 2:输入:nums = [2,3,5,7]输出:4解释:只有一种可行的切割:[2],原创 2020-06-01 13:15:49 · 1076 阅读 · 0 评论 -
柱状图中最大的矩形
leetcode中的题目链接题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例输入: [2,1,5,6,2,3]输出: 10测试数据public static void main(String[] args) { // TODO Auto-generated method stub// int f[]= {2,1,5,6,2,3}; //10// int f[]= {2,1,2};原创 2020-05-27 20:39:30 · 105 阅读 · 0 评论 -
java中对hashmap的遍历以及排序
遍历Map<Character, Integer> tmap=new HashMap<Character, Integer>();// 赋值操作省略了Iterator it=tmap.entrySet().iterator();while(it.hasNext()) { Map.Entry entry=(Map.Entry)it.next(); Object key=entry.getKey(); int value=(int)entry.getValue(); }原创 2020-05-26 16:32:10 · 192 阅读 · 0 评论 -
最长回文子串
在leetcode中做到最长回文子串,看了别人的解法,我自己也总结了一下(java实现)leetcode链接暴力解决 时间复杂度O(n3)思路:双层循环,每次判断【i,j】范围是否时回文,如果是回文,则比较保存的长度和当前长度。若当前的子串长,则更新起始坐标和长度。每次保存起始坐标和长度,最后做字符串的截取。public static String longestPalindrome(String s) { if(s.length()<1) return ""; int pos=0,l原创 2020-05-22 13:22:40 · 90 阅读 · 0 评论 -
每个元音包含偶数次的最长子字符串
leetcode上的题目链接要求给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’ ,在子字符串中都恰好出现了偶数次。示例 1:输入:s = "eleetminicoworoep"输出:13解释:最长子字符串是 "leetminicowor" ,它包含 e,i,o 各 2 个,以及 0 个 a,u 。示例 2:输入:s = "leetcodeisgreat"输出:5解释:最长子字符串是 "leetc" ,其中包含原创 2020-05-20 13:26:37 · 457 阅读 · 0 评论 -
快排分割区域的两种实现思路
调用public static void quick_sort(int f[],int from,int to) { if(from>=to) return; int compare=partition(f, from, to); quick_sort(f, from, compare-1); quick_sort(f, compare+1, to);}第一种思路:f[to]为比对值。然后先i、j分别从左右查询比compare打的、小的。然后交换数据位置。public stat原创 2020-05-19 18:21:13 · 2224 阅读 · 0 评论 -
矩阵区域和
题目leetcode 链接地址要求:给你一个 m * n 的矩阵 mat 和一个整数 K ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和:i - K <= r <= i + K, j - K <= c <= j + K(r, c) 在矩阵内。示例 1:输入:mat = [[1,2,3],[4,5,6],[7,8,9]], K = 1输出:[[12,21,16],[27,45,33],[24,3原创 2020-05-18 21:15:42 · 215 阅读 · 0 评论 -
最大子序和
要求给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。这里有书上看到的,别人写的和我自己想到的,都记录一下吧,有四种方法。实现方法一 (最开始想到的)时间复杂度 O(N2)思路:遍历依次寻找最大值public static int maxSubArray(int[] nums) {原创 2020-05-18 17:18:37 · 90 阅读 · 0 评论