Algorithm
文章平均质量分 67
gendlee1991
编程界的小学生
展开
-
0102 LRU算法必杀技
LRU算法必杀技原理概述:LRU(Least Recently Used),最近最少使用原则实现的缓存淘汰算法。“最近最少”的误解:很多人看字面意思很可能理解为“最近使用和最少使用的被淘汰”,理解几乎完全相反了。“最近最少”的正确理解:基于这样一种准则:刚使用过的、最新添加的元素,被(再次)使用到的概率更大,因此要放到队列读取的最前端,最先淘汰队列尾端的元素(说明它被添加的时间很长了而且很少被访问到过,若是新添加的、经常被访问过的应该在靠近读取端头部)。看这样一个例子:面试题 16.25. LRU原创 2020-12-12 15:00:13 · 213 阅读 · 0 评论 -
0099 经典算法系列——线段树
LeetCode 307class NumArray { int[] sum; int size; int[] nums; public NumArray(int[] nums) { if (nums == null || nums.length == 0) return; this.nums = nums; this.size = nums.length; ...原创 2020-06-25 20:40:53 · 145 阅读 · 0 评论 -
0096 经典算法系列——回溯法
回溯法有模板:result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) returnfor 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择作者:jeromememory链接:https://leetcode-cn.com/problems/combination-sum/solution/hui-su-suan-fa-tao-m...原创 2020-06-18 23:13:06 · 222 阅读 · 0 评论 -
0095 经典算法系列——并查集(Union-Find)
概念TODOUF的标准模板算法实战 等式方程的可满足性(medium) 朋友圈(medium) 最长连续序列(hard)下面将介绍以上题目的实现:等式方程的可满足性(medium)分析:List itemclass Solution { public boolean equationsPossible(String[] equations) { int n = equations.length; UF uf = new UF();原创 2020-06-16 22:32:12 · 230 阅读 · 0 评论 -
0093 泛洪填充之岛屿问题
泛洪填充常见于岛屿问题: 1254.统计封闭岛屿的数目 694.不同的岛屿数 200.岛屿问题解法三种:DFS,BSF,并查集下面以200.岛屿问题解析泛洪填充的过程,题目描述:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入: 11110 11010 11000 00000 输出: 1 示例 2:输入: 11原创 2020-05-28 23:11:30 · 198 阅读 · 0 评论 -
0092 经典算法系列——泛洪填充(FloodFill)
泛洪填充(FloodFill)问题在图像处理中非常常用,它和连通图的概念相似。最近在YouTube看 Patrick Shyu (TechLead)的视频,他讲他在谷歌面试别人的时候,常会出一道泛洪填充的题。这道题参考LeetCode733:有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,原创 2020-05-27 23:23:14 · 1966 阅读 · 0 评论 -
0086 shopee面试题汇总
1、大数据方向leetcode hard 寻找两个有序数组的中位数##了解MVCC吗MVCC:多版本并发控制。特点1.MVCC其实广泛应用于数据库技术,像Oracle,PostgreSQL等也引入了该技术,即适用范围广2.MVCC并没有简单的使用数据库的行锁,而是使用了行级锁,row_level_lock,而非InnoDB中的innodb_row_lock.基本原理:MVCC的实现...原创 2020-04-25 23:49:21 · 16655 阅读 · 0 评论 -
0083 不用比较元素大小也能排序——计数排序算法实现与分析
package sort;public class CountSorting { public static void countSort(int[] nums){ if (null == nums || nums.length < 2) return; int min = Integer.MAX_VALUE; ...原创 2019-11-02 14:26:29 · 260 阅读 · 0 评论 -
0082 分治法实现归并排序
package sort;public class MergeSorting { public static void mergeSort(int[] nums, int start, int end){ if (start == end) //终止条件(细品) return; int mid = (start + end)/...原创 2019-10-29 21:10:25 · 187 阅读 · 0 评论 -
0081 插入排序简单分析
package sort;public class InsertSorting { public static void insertSort(int[] nums){ if (null == nums || nums.length < 2) return; for (int i = 0; i < nums.leng...原创 2019-10-29 20:06:23 · 103 阅读 · 0 评论 -
0080 分治法思想下的快速排序算法
public class QuickSorting { public static void quickSort(int[] nums, int start, int end){ if (start > end) //终止条件(细品) return; int i = start; int j = end; ...原创 2019-10-28 20:55:49 · 155 阅读 · 0 评论 -
0079 选择排序的“丑陋”
public class SelectSorting { public static void selectSort(int[] nums){ if (null == nums || nums.length < 2) return; for (int i = 0; i < nums.length; i++){ ...原创 2019-10-28 20:19:11 · 152 阅读 · 0 评论 -
0078 冒泡排序算法分析
//假设升序排序public class BubbleSorting { public static void bubbleSort(int[] nums){ if (null == nums || nums.length < 2) //空或1个是有序的不用处理 return; for (int i = 0; i <...原创 2019-10-28 19:56:10 · 114 阅读 · 0 评论 -
0062 玻璃珠从楼层上丢下找破碎临界楼层(腾讯笔试题)
最近做的一道腾讯笔试题。原创 2016-09-20 23:23:24 · 4667 阅读 · 0 评论 -
0059 给定一些值和一个要组成的数字,求总的组合数(遍历解答树)
如:有1分,2分,5分,10分四种硬币,每种硬币无限,给定Target分钱,求多少种组合可以合成Target分钱?// ShangJi.cpp : 定义控制台应用程序的入口点。#include #includeusing namespace std;int count=0;int Target=0;int coin[4]={1,2,5,10};int total=0;ve原创 2016-08-22 12:05:28 · 746 阅读 · 0 评论 -
0053 关于虚继承与虚函数占用字节的探索
1、为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:public virtual A;c原创 2016-07-30 11:37:46 · 810 阅读 · 0 评论 -
0052 二叉搜索树线索化为双向链表
二叉查找树的线索化将一棵二叉搜索树(又叫查找树)转化成一个排序的双向链表,我们也叫它为线索化。原创 2016-07-28 17:55:09 · 446 阅读 · 0 评论 -
0050 KMP匹配算法的C++实现
KMP模式匹配算法在搜索与索引中是算法基础(?)KMP匹配分两步:1)根据要查找的字符串计算出next值;2)利用next值来控制移动位置,实现高效匹配,不做多余的比较。原创 2016-06-02 11:34:11 · 317 阅读 · 0 评论 -
0026分治法应用之求最大最小值
分治法就是讲大规模问题化成小的同类型问题,分开求解再合并各个解。它比直接求的比较次数要少用分治法求最大最小值: public static int getMax(int[] array, int i,int j) { int Max1 = 0; int Max2 = 0; if (i =原创 2015-12-22 16:26:23 · 469 阅读 · 0 评论