Data Structure
文章平均质量分 68
gendlee1991
编程界的小学生
展开
-
0102 LRU算法必杀技
LRU算法必杀技原理概述:LRU(Least Recently Used),最近最少使用原则实现的缓存淘汰算法。“最近最少”的误解:很多人看字面意思很可能理解为“最近使用和最少使用的被淘汰”,理解几乎完全相反了。“最近最少”的正确理解:基于这样一种准则:刚使用过的、最新添加的元素,被(再次)使用到的概率更大,因此要放到队列读取的最前端,最先淘汰队列尾端的元素(说明它被添加的时间很长了而且很少被访问到过,若是新添加的、经常被访问过的应该在靠近读取端头部)。看这样一个例子:面试题 16.25. LRU原创 2020-12-12 15:00:13 · 210 阅读 · 0 评论 -
0101 分布式锁实现方式
究事物之际,通技艺之变,成一家之言 在单机服务中,锁存在于单机的JVM中,对单机中应用的线程进行加锁和释放锁的操作。然而在分布式系统中,应用是部署在多台机器上的,因此便存在互相独立的多个JVM,传统的锁方式便失效,因为传统的锁只能对单个JVM中的线程作用。于是,分布式锁便应运而生。 分布式锁目前的方案有很多种,包括但不限于:Redis分布式锁(RedLock),Zookeeper分布式锁、数据库(实现的分布式锁(MySQL)。下面分别介绍三种锁的实现方法及...原创 2020-12-08 22:54:12 · 190 阅读 · 0 评论 -
0062 玻璃珠从楼层上丢下找破碎临界楼层(腾讯笔试题)
最近做的一道腾讯笔试题。原创 2016-09-20 23:23:24 · 4667 阅读 · 0 评论 -
0057 找出数组中出现次数超过一半的数字
如题,若存在超过一半长度的数字,返回它,反之则返回0(这种返回并不好,但是为了简化问题和说明思想)思路:1)用一个标记,初始化为1,当遇见一个相同的数字,加1,遇见的是不同的,则减1;当标记位值为零,则需要重新记录当前遍历的数字,作为候选数字。2)从头开始遍历数组,用一个标记位time=1开始,用一个变量来记录候选的值result,初始化为数组第一个数字;当遍历时遇见相同的则t原创 2016-08-12 17:46:21 · 254 阅读 · 0 评论 -
0056 去除字符串中重复的字符
思路:1)对每个字符,检查在已发现的字符集合中是否已经存在;2)若存在,则跳过,否则加入到已发现的字符集合中。#include#includeusing namespace std;void removeDuplicates(char* str){ if(str==NULL) return; int len = strlen(str); if(len < 2) r原创 2016-08-11 16:02:24 · 270 阅读 · 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 · 745 阅读 · 0 评论 -
0055 那些必须要知道的排序算法
本文主要讨论面试中经常会被问到的算法(我猜那些思想这么重要肯定会问吧),亲自手动实践,运行成功的。原创 2016-08-04 22:04:21 · 435 阅读 · 0 评论 -
0052 二叉搜索树线索化为双向链表
二叉查找树的线索化将一棵二叉搜索树(又叫查找树)转化成一个排序的双向链表,我们也叫它为线索化。原创 2016-07-28 17:55:09 · 445 阅读 · 0 评论 -
0050 KMP匹配算法的C++实现
KMP模式匹配算法在搜索与索引中是算法基础(?)KMP匹配分两步:1)根据要查找的字符串计算出next值;2)利用next值来控制移动位置,实现高效匹配,不做多余的比较。原创 2016-06-02 11:34:11 · 317 阅读 · 0 评论 -
0034单链表反转操作图解
本文主要画图讲思路。原创 2016-04-03 16:46:21 · 431 阅读 · 0 评论 -
0032冒泡算法升序排序及其改进算法
冒泡算法及其改进算法,可以减少比较次数,节省时间。原创 2016-03-22 09:49:00 · 326 阅读 · 0 评论 -
0014完整的单链表节点类声明
假设单链表节点类为OnelinkNode。class OnelinkNode{ public: int data; //数据元素域 OnelinkNode *next; //指针域,指向后继节点 OnelinkNode(int k=0,OnelinkNode *ne原创 2015-11-02 17:27:12 · 621 阅读 · 0 评论 -
0025二叉树的设计与实现
按先根次序遍历二叉树,利用递归算法。算法基本描述:1)二叉树为空,返回;否则继续;2)从根节点开始,访问当前节点;3)按先根次序遍历当前节点左子树;3)按先根次序遍历当前节点右子树;先定义二叉树节点类:#ifndef TreeNode1_H_#define TreeNode1_H_#include using namespace std;class TreeNo原创 2015-11-24 09:45:12 · 401 阅读 · 0 评论 -
0020回文的一种实现方法
rotor——从前向后和从后向前读取都是同一个字符串,还有这句:上海自来水来自海上,青岛多树木树多岛青。如何判断一句话是否为回文,这里编写了以个类。原创 2015-11-16 20:01:34 · 357 阅读 · 0 评论 -
0024网络爬虫的基本原理(二)
互联网是实时变化的,具有很强的动态性。网页更新策略主要是决定何时更新之前已经下载过的页面。常见的更新策略又以下三种:转载 2015-11-21 19:21:48 · 467 阅读 · 0 评论 -
0011从后缀表达式与二叉树的关系
本文转自:http://www.jellythink.com/archives/688二叉树的遍历对于二叉树无非就三种遍历方式:前序遍历;中序遍历;后序遍历;对于这三种遍历方式,我通过下面这张图来详细的介绍一下我的方法。 前序遍历:访问根节点->遍历左子树->遍历右子树中序遍历:遍历左子树->访问根节点->遍历右子树后序遍历:遍历左子树->遍历右子树->访问转载 2015-10-29 17:16:30 · 1020 阅读 · 0 评论 -
0018C++中的vector是个什么鬼
编程偶然遇到vector,虽然几次发现这个神兽,但不知用来干啥的,今天在别人博客中转来细细研究一番。在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。转载 2015-11-11 19:41:55 · 343 阅读 · 0 评论 -
0017希尔排序算法(Shellsort)的单文档实现
希尔排序算法的思想:在排序之前,允许数据元素做大的移动,当数据元素接近目的地时,再做较小的移动。这是比较书面的表达,比如对一个数列table[n=8]进行排序,难么必须先确定一个增量(增量的选择决定了排序算法的时间复杂度),取jump=n/2,那么对table[i]和table[i+jump]进行比较,顺序则保持不变,逆序则交换,i从0到n-jump。原创 2015-11-09 11:02:54 · 417 阅读 · 0 评论 -
0016单链表的完整功能及单链表翻转
首先是单链表节点的类,在命名为OnelinkNode.h的头文件里:#ifndef OnelinkNode_H_#define OnelinkNode_H_class OnelinkNode{public: int data; OnelinkNode* next; OnelinkNode(int k=0,OnelinkNode*nextNode=NULL) { data =原创 2015-11-06 16:14:57 · 352 阅读 · 0 评论