算法
stone_tomcat
路漫漫气息永存!
展开
-
找出数组中连续几个数之和等于指定值得最大长度
找出数组中连续几个数之和等于指定值得最大长度原创 2022-06-15 10:07:07 · 88 阅读 · 0 评论 -
scala 猴子吃桃的问题
/** * 猴子吃桃子问题有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个! * 以后每天猴子都吃其中的一半,然后再多吃一个。 * 当到第十天时,想再吃时(还没吃),发现只有1个桃子了。问题:最初共多少个桃子? */def peach(day: Int): Int = { if (day == 10) { return 1 } else { return (peach(day + 1) + 1) * 2 }}...原创 2021-12-28 16:20:32 · 345 阅读 · 0 评论 -
Hive的安装及MySQL搭配使用
一、Hive的安装方式hive的安装一共有三种方式:内嵌模式、本地模式、远程模式元数据服务(metastore)作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。1、内嵌模式内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。数据库和Metastore服务都..原创 2021-11-23 13:23:41 · 1581 阅读 · 0 评论 -
数组向右移动0
public static void zero_rightmove(){ int[] nums = {0, 2, 0, 4, 5, 6, 7}; int len = nums.length ; int[] temp =new int[len]; ; int count = 0 ; for (int i = 0; i < nums.length ; i++) { if(nums[i] == 0) { count ++ .原创 2021-08-31 10:09:13 · 109 阅读 · 0 评论 -
向左移动0
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [0,0,1,3,12]public static void zero_move(){ int[] num = {0, 2, 0, 4, 5, 6, 7}; int left = 0 ; int right =0; for (int i = 0; i < num.length ; i++) { .原创 2021-08-30 16:20:54 · 105 阅读 · 0 评论 -
旋转数组 将数组中的元素向右移动 k 个位置
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为O(1) 的原地算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]...原创 2021-08-30 13:13:05 · 664 阅读 · 0 评论 -
香蕉船算法
有一队人体重分别为people[i] ,一只船最多载limit,并且最多载两人 ,求解通过河需要最小船只数量nums[10,50,50,100, 95] 90 需要四只船public static int ship(int[] nums, int target) { Arrays.sort(nums); int a = 0; int len = nums.length - 1; int left = 0; while(len >...原创 2021-08-30 09:58:21 · 78 阅读 · 0 评论 -
字符串反转及递减数列和阶乘的算法实现
public static void main(String[] args) { System.out.println(dijianQuene(5)); System.out.println(jiecheng(5)); System.out.println(reverseStr("ABHDDDEEDDGG8YEEE"));}//字符串转置public static String reverseStr (String m){ if(m.length() >...原创 2021-07-30 16:04:02 · 144 阅读 · 0 评论 -
FST 压缩算法
1 lucene字典 使用lucene进行查询不可避免都会使用到其提供的字典功能,即根据给定的term找到该term所对应的倒排文档id列表等信息。实际上lucene索引文件后缀名为tim和tip的文件实现的就是lucene的字典功能。 怎么实现一个字典呢?我们马上想到排序数组,即term字典是一个已经按字母顺序排序好的数组,数组每一项存放着term和对应的倒排文档id列表。每次载入索引的时候只要将term数组载入内存,通过二分查找即可。这种方法查询时间复杂度为Log(N),N指...原创 2021-07-29 20:42:20 · 4403 阅读 · 0 评论 -
TRIE 前缀树
一、什么是Trie树Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树或键树,是一种多叉树结构。如下图:上图是一棵Trie树,表示了关键字集合{“a”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”} 。从上图可以归纳出Trie树的基本性质:根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。 每个节点的所有子节点包含的字符互不相同。...原创 2021-07-29 14:31:08 · 212 阅读 · 0 评论 -
B-与 B+ Trees
B+Trees 把数据data放在叶子结点 加快查询速度原创 2021-07-24 09:28:20 · 72 阅读 · 0 评论 -
好用的数据结构网站
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html原创 2020-06-17 11:21:42 · 217 阅读 · 0 评论 -
字符串反转的常见方法
public class Test { public static void main(String[] args) { String str = "dfsaewa dsafa123"; System.out.println(new StringBuilder(str).reverse().toString()); // 利用stringBuffer String reverse = ""; for (int i =.原创 2020-06-11 12:36:43 · 182 阅读 · 0 评论 -
int 与integer的区别简介
int 基础类型integer 包装类型int 按照值传递integer 按照引用传递但是在hash表中是按照值传递原创 2020-06-06 13:00:33 · 130 阅读 · 0 评论 -
hash表的增删改查时间复杂度都是o(1)
hash表的增删改查时间复杂度都是o(1)原创 2020-06-06 12:54:12 · 1445 阅读 · 0 评论 -
node 链表
单向链表节点结构public class Node { public int value; public Node next; public Node(int data) { value = data; } }双向链表节点结构public class DoubleNode { public int value; public DoubleNode last; public DoubleNode nex...原创 2020-06-05 13:59:52 · 581 阅读 · 0 评论 -
一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数
{1,2,3,3,4,4,1}int a = 1^2^3^3^4....原创 2020-06-05 10:50:48 · 966 阅读 · 0 评论 -
数字交换的简单实现
int a = 3;int b = 4;a = a^b;b = a^b;a = a^b;System.out.println("a" + a);System.out.println("b" + b);原创 2020-06-05 10:31:54 · 157 阅读 · 0 评论 -
二分法 寻址
1 2 3 4 5 6 7...时间复杂度0(log2N)原创 2020-06-05 10:23:13 · 115 阅读 · 0 评论 -
数组降序排序 选择
public static void main(String[] args) { Integer[] list = {1,3,4,5,6,7,7,4,4,6}; for (Integer integer : list) { System.out.println(integer); } for ( int i = 0 ; i < list.length ; i++ ) { for...原创 2020-06-05 09:35:04 · 671 阅读 · 0 评论 -
常数时间的操作
如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定时间。原创 2020-06-05 06:48:17 · 729 阅读 · 0 评论 -
算法常见的评估指标
时间复杂度 额外空间复杂度 常数项时间 在数据结构上玩算法原创 2020-06-05 06:44:12 · 236 阅读 · 0 评论 -
题目:已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位。
解决办法1. 已知 sqrt(2)约等于 1.414,那么就可以在(1.4, 1.5)区间做二分查找,如: a) high=>1.5 b) low=>1.4 c) mid => (high+low)/2=1.45 d) 1.45*1.45>2 ? high=>1.45 : low => 1.45 e) 循环到 c)2. 退出条件a) 前后两次的...原创 2019-08-26 13:42:25 · 491 阅读 · 0 评论 -
如何实现一个高效的单向链表逆序输出?
参考答案:下面是其中一种写法,也可以有不同的写法,比如递归等。供参考。typedef struct node{ int data; struct node* next; node(int d):data(d), next(NULL){}}node;void reverse(node* head){ if(NULL == he...原创 2019-08-26 13:37:24 · 261 阅读 · 0 评论 -
数字反转
给出一个 整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123456输出: 654321示例 2:输入: 120输出: 21public class Fanzhuan { public static int reverse(int x) { int result = 0; while (x != 0) ...原创 2019-08-15 10:16:40 · 959 阅读 · 0 评论 -
求两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素demo:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2019-08-14 11:21:16 · 150 阅读 · 0 评论