随笔分类 -  算法

摘要:需要考虑几个点: 红包形成的队列不应该是从小到大或者从大到小,需要有大小的随机性。 红包这种金钱类的需要用Decimal保证精确度。 考虑红包分到每个人手上的最小的最大的情况。 下面是利用线段分割算法实现的分红包, 比如把100元红包,分给十个人,就相当于把(0-100)这个线段随机分成十段,也就是 阅读全文
posted @ 2019-04-26 10:08 codelzc 阅读(2078) 评论(0) 推荐(1)
摘要:面试的一道题目,实现int随机数的阶乘。这道题就是考察你考没考虑大数问题,如何避免它。 我能想到的就是用数组去实现,然后写了一下代码。但是当i的值很大,接近Max_value时的情况还没有考虑到。 直接看代码:mul进行数组每一位的阶乘,carry()用来对数组的每一位进位,pos记录当前的数组有效 阅读全文
posted @ 2019-03-26 10:49 codelzc 阅读(301) 评论(0) 推荐(0)
摘要:今天鹅厂店面,最后问了一个ip地址字符串和整数间无损转化的问题,晚上有时间了手撸了一下代码。 阅读全文
posted @ 2019-03-21 18:58 codelzc 阅读(575) 评论(0) 推荐(0)
摘要:KMP算法匹配字符串 阅读全文
posted @ 2019-03-19 22:08 codelzc 阅读(169) 评论(0) 推荐(0)
摘要:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 示例 2: TopK的问题,思路就是用堆来解决。 先以前K个元素构建一个大小为K的小顶堆,然后从K个元素之后,遍历从索引在K后面的元素,如果有大于小顶堆的堆顶元素 阅读全文
posted @ 2019-03-16 15:57 codelzc 阅读(2330) 评论(0) 推荐(0)
摘要:给定一个入栈的序列(1,2,3,4,5);求它所有可能的出栈序列。 思路:先求序列的全排列,再求全排列的同时,判断这个序列是不是出栈序列。 阅读全文
posted @ 2019-03-15 16:51 codelzc 阅读(1390) 评论(0) 推荐(0)
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路:这道题只说了是非 阅读全文
posted @ 2019-03-15 10:40 codelzc 阅读(144) 评论(0) 推荐(0)
摘要:将待排序的序列构造成一个大顶堆(从大到小排要构造成小顶堆)。此时,整个序列的最大值就是堆顶的根节点,将他和末尾元素交换,然后将剩余的length-1个节点序列重新构造成新的堆。重复执行,便能得到一个有序序列。 阅读全文
posted @ 2019-03-03 10:45 codelzc 阅读(2673) 评论(0) 推荐(1)
摘要:package sort; public class QuickSort { static void qsort(int []a,int low,int high){ int pivot; while(low>1; /*前中后三点三数取中,让a[low]为中间值*/ if(a[low]>a[high]) ... 阅读全文
posted @ 2019-03-02 21:40 codelzc 阅读(226) 评论(0) 推荐(0)
摘要:非递归版 待完善中... 阅读全文
posted @ 2019-03-02 21:07 codelzc 阅读(200) 评论(0) 推荐(0)