算法
文章平均质量分 74
life is ftc
会的越多,不会的越多!Life is Fantastic,愿我多年之后还是从前那个少年!
展开
-
数据结构之优先队列
一、数据结构二叉堆首先,二叉堆是一颗被完全填满的二叉树。有任意节点的左节点为2i+1,右节点为2i+2; 在一个堆中,对于每一个节点X,X的父亲中关键字小于(或等于)X中的关键字,根节点除外。 insert操作:上滤,从下往上寻找可以插入的节点; delete操作:下滤,删除根,递归根节点的最小儿子补位。 定理:包含2^(k+1)-1个节点,高为h的理想二叉树的节点的高度和为2^(k+1)-1-(h+1);d-堆d-堆是二叉堆的简单推广,它就像一个二叉堆,只是所有节点都有d个儿子,原创 2021-05-09 19:28:47 · 206 阅读 · 0 评论 -
布隆过滤器
一、什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。二、实现原理HashMap 的问题讲述布隆过滤器的原理之前,我们先思考一下,通常你判断某个元素是否存在用的是什么?应该蛮多人回答 HashMap 吧,确实转载 2020-07-12 14:50:00 · 414 阅读 · 0 评论 -
设计一个公平的洗牌算法
设计一个公平的洗牌算法1.看问题,洗牌,显然是一个随机算法了。随机算法还不简单?随机呗。把所有牌放到一个数组中,每次取两张牌交换位置,随机 k 次即可。如果你的答案是这样,通常面试官会进一步问一下,k 应该取多少?100?1000?10000?很显然,取一个固定的值不合理。如果数组中有 1000000 个元素,随机 100 次太少;如果数组中只有 10...翻译 2020-03-27 11:27:40 · 560 阅读 · 0 评论 -
Oracle使用MD5函数,加密字符串
一、加密字符串方法CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32);BEGIN retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd));...原创 2020-03-24 10:35:22 · 757 阅读 · 0 评论 -
每日算法:报数
题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11被读作"two 1s"("两个一"), 即21。21被读作"one 2", "one 1"("一个二"...原创 2019-05-08 11:20:24 · 354 阅读 · 0 评论 -
每日算法:删除链表的倒数第N个节点
题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路一次扫描实现的意思是我们要在循环中想办法寻找到倒数第n+1个节点,...原创 2019-04-18 16:52:35 · 168 阅读 · 0 评论 -
每日算法:有效的括号(Stack)
题目描述给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: ...原创 2019-04-14 12:18:42 · 379 阅读 · 0 评论 -
每日算法:整数转罗马数字
题目描述罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两...原创 2019-04-09 17:59:51 · 681 阅读 · 1 评论 -
每日算法:两数相加
题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&g...原创 2019-04-08 17:47:56 · 226 阅读 · 0 评论 -
每日算法:整数反转
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返...原创 2019-04-11 17:30:15 · 217 阅读 · 0 评论 -
每日算法:无重复字符的最长子串
题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无...原创 2019-04-10 18:03:56 · 178 阅读 · 0 评论 -
oracle删除重复数据
适用场景:除主键外其余信息均相同的数据delete from 表 where 主键 in(select 主键 from 表 a where (a.另一个字段名) in (select 另一个字段名 from 表 group by 另一个字段名 having count(*) > 1)and rowid not in (select min(rowid) from 表 grou...原创 2018-12-20 16:40:34 · 137 阅读 · 0 评论 -
有序查找———二分查找
二分查找Java中一种比较次数少、查找速度快、平均性能好的有序查找。缺点是:要求待查找的数据结构是有序数据结构,且插入、删除比较困难。因此,二分查找适用于数据不经常变动而查找频繁的有序数据结构。下边分享一种实现代码:希望对大家能够有所帮助!!...原创 2018-03-27 20:12:17 · 352 阅读 · 0 评论 -
搜寻吉祥数,在给定的范围内,例如1~99999,找出吉祥数字,满足的条件为:全部数字必须由6或者8构成,如66666,66668,668,…
题目:在给定的范围内,例如1~99999,找出吉祥数字,满足的条件为:全部数字必须由6或者8构成,如66666,66668,668,…1.一开始想的很杂,考虑了效率:把要查找的数转化成String再转化成char数组,逐个跟“6”,“8”比较。但是这样的话,用String会创建许多对象,会消耗许多内存资源。2.想到了将每个需要判断的位数都转化成各位上的数,然后%10,得到这个值跟6和8比较...原创 2018-03-29 20:15:31 · 5154 阅读 · 3 评论