
算法
临安_大大白
上海某科研所,在读硕士研究生。
一起朝着正确的方向努力,一起进步
展开
-
刷题中常用的一些Java API统计
1、进制转换String num = sc.nextLine().substring(2);System.out.print(Integer.parseInt(num,16));2、排序(二维数组排序)Arrays.sort(arr, new Comparator<int[] a>(){ @Override public int compare(int[] o1, int[] o2){ return o1[0] - o2[0]; }}Ar原创 2022-05-04 01:19:30 · 351 阅读 · 0 评论 -
3月19日LeetCode刷题笔记
两数相加 II给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例1:输入:l1 = [7,2,4,3], l2 = [5,6,4]输出:[7,8,0,7]示例2:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[8,0,7]示例3:输入:l1 = [0], l2 = [0]输出:[0]提示:1、链表的长度范围为 [1, 1.原创 2022-03-19 19:40:33 · 1050 阅读 · 0 评论 -
针对场景和系统设计题的一些解决思路
1、对于海量数据,要求找出其中top n的热点数据,限制内存为m,设计思路如下:密匙一: 分而治之/Hash映射 + Hash_map统计 + 堆/快速/归并排序密匙二、多层划分多层划分----其实本质上还是分而治之的思想,重在“分”的技巧上!适用范围:第k大,中位数,不重复或重复的数字基本原理及要点:因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进行。密匙三:Bloom filter/BitmapBloom filter关于什么是Blo原创 2022-02-26 23:50:04 · 405 阅读 · 0 评论 -
针对红黑树比较正确和完整的一个小总结
1、红黑树红黑树是一种类似二叉平衡排序树,对树的平衡状态要求要松一点。避免了频繁左旋、右旋带来的时间和空间资源的消耗。2、红黑树的几大特征1、根结点的颜色是黑色,叶子结点的颜色是黑色2、树中结点的颜色只能是红色/黑色3、红色结点的颜色只能是黑色4、插入结点时,默认是红色5、根结点到叶子结点的路径上,具有相同数量的黑色结点3、变色操作当插入新结点后,如果不满足红黑树的性质,则需要进行变色操作。1、变色条件:当前结点是红色,且其父亲和叔叔结点都是红色时就需要进行变色。2、变色过程:将原创 2022-02-26 16:29:46 · 605 阅读 · 0 评论 -
巴什博奕(Bash Game)入门
巴什博奕(Bash Game)入门巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜结论:若(m+1) | n,则先手必败,否则先手必胜显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,原创 2021-10-28 11:02:03 · 2604 阅读 · 0 评论 -
LeetCode(215) —— 数组中第K个最大元素(优先队列)
一、优先队列优先队列priorityQueue是Queue接口的实现,可以对其中元素进行排序,可以放基本的包装类型或自定义的类,对于基本类型的包装类,优先队列中元素的默认排列顺序是升序,但是对于自定义类来说,需要自定义比较类priorityQueue的内部实现PriorityQueue对元素采用的是堆排序,头是按指定排序方式的最小元素。堆排序只能保证根是最大(最小),整个堆并不是有序的。方法iterator()中提供的迭代器可能只是对整个数组的依次遍历。也就只能保证数组的第一个元素是最小的Prio原创 2021-09-29 13:48:40 · 670 阅读 · 0 评论 -
几种查找方法
1、折半查找二分法求平方根class Solution { /** *二分法求平方根 */ public int mySqrt(int x) { if(x <= 1){ return x; } int l = 0, r = x; while(l <= r){ int ans = (l + r)/2; if(Math.pow(原创 2021-07-04 11:51:36 · 119 阅读 · 0 评论 -
结果超过Int类型最大容量,如何实现运算及存储
package com.micah.chapter01;import java.math.BigInteger;/** * @Author m.kong * @Date 2021/7/4 上午9:22 * @Version 1 * @Description */public class Q43 { /** * 方法1 * @param num1 操作数1 * @param num2 操作数2 */ public static voi原创 2021-07-04 11:27:06 · 585 阅读 · 0 评论 -
算法与数据结构之十二大排序算法
1 直接插入排序代码实现:线性表版本:package com.micah.chapter01;/** * @Author m.kong * @Date 2021/6/29 下午12:59 * @Version 1 * @Description insert sort */public class InsertSort { /** * insert sort * @param a array will sort */ public sta.原创 2021-06-29 13:47:18 · 155 阅读 · 0 评论 -
2021-06-15
1、“下一个排列”的定义给定数字序列的字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。我们可以将该问题形式化地描述为:给定若干个数字,将其组合为一个整数。如何将这些数字重新排列,以得到下一个更大的整数。如 123 下一个更大的数为 132。如果没有更大的整数,则输出最小的整数。2、问题描述3、算法设计设计思路:找到输入数组字典序中的下一个位置,感觉像是找规律一样… (可以多举几个例子,找一下其中的共同点) 比如1,2,3,4,5的下一个字典序为原创 2021-06-15 17:35:00 · 109 阅读 · 0 评论 -
数据结构经典排序算法汇总整理
一、冒泡排序1、思想以及时间复杂度:冒泡排序就是每次确定最后一位数,经过n趟排序后序列有序,T(n) = O(n2)2、算法实现:package utils;import java.util.Arrays;/** * @Author m.kong * @Date 2020/12/15 上午10:36 * @Version 1.0 */public class BubbleSort { public static void bubbleSort(int[] arr){原创 2020-12-15 14:47:10 · 191 阅读 · 2 评论 -
机器学习(Advanced Optimization) : fminunch和optimset函数的用法
吴恩达老师,机器学习系列课程 - 6.6 Advanced Optimization中出现了optimset和fminunch这两个函数。定义一个可以计算代价函数的函数function [jVal, gradient]=costFunction(theta) jVal = (theta(1)-5)^2 + (theta(2)-5)^2; gradient = zeros(2, 1); gradient(1) = 2*(theta(1)-5); gradient(2) = 2*(theta(2)-原创 2020-11-17 10:22:45 · 2084 阅读 · 2 评论 -
每日一题(Java版本):无重复字符的最大长串
题目:无重复字符的最大长串。答案:Java版本:class Solution { public int lengthOfLongestSubstring(String s) { int start = 0, length = 0, count = 0, flag; char charIndex; HashMap<Character, Integer> map = new HashMap<Character, Integer&原创 2020-11-10 20:34:12 · 118 阅读 · 0 评论 -
每日一题(Java):两数之和
难度:★题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]解答:class Solution { public int[] twoSum(int[] nums, in原创 2020-11-09 10:43:48 · 115 阅读 · 2 评论