
编程题目
孙哥vl
撸出全新的hello world
展开
-
手撕LRU算法
LRU(Least Recently Used)最近最少使用,是一种页面置换算法,自认为这个翻译有点不太贴切。LRU通俗来说就是在一块大小有限的内存中,最近访问的(包括增改查)数据放到最前面,当加入新的数据时,如果已满,则需要先删除最后面的数据。所以就是将最近使用的放到最前面。hashmap+双向链表实现import java.util.HashMap;import java.util.Ma...原创 2019-11-14 02:19:39 · 526 阅读 · 0 评论 -
编程:假设有n个人进行排名,允许并列排名,名次并列人的不同顺序算一种,总共有多少种排名?
疯狂游戏笔试一道有趣的编程题:排名问题题目描述解题思路代码题目描述假设有n个人进行排名,允许并列排名,名次并列人的不同顺序算一种,总共有多少种排名?例:n=2,输出3,有:a>b,a<b,a=b。解题思路这里用到的是动态规划的方法,当然也可以用递归,但是递归计算复杂度高,所以还是用动态规划吧。不了解递归和动态规划区别的自行百度。首先假设有j个人,名次的个数为i(1 <...原创 2019-07-20 23:28:01 · 1396 阅读 · 1 评论 -
(LeetCode1044)最长重复子串:给出一个字符串S,返回其最长重复子串
题目描述给出一个字符串 S,考虑其所有重复子串(S 的连续子串,出现两次或多次,可能会有重叠)。返回任何具有最长可能长度的重复子串。(如果 S 不含重复子串,那么答案为 ""。)方法1:后缀数组法// 后缀数组法import java.util.Arrays;class Solution { public String longestDupSubstring(String S...原创 2019-07-25 23:57:30 · 26775 阅读 · 11 评论 -
严格递增和非严格递增最长递增子序列长度
严格递增最长递增子序列,给定一个无序整数数组nums(字符串也可以,不重要),给出最长严格递增子序列的长度。比如输入[1, 2 , 1, -1, 1, 4, 0],输出3,最长递增子序列[1, 2, 4],当然可能不唯一,[-1, 1, 4]也是一个,但是并不影响长度。强行遍历就不说了,时间复杂度O(2^n),简直爆炸。思路1:动态规划,建立一个数组dp,dp[i]记录nums[0:i]的最...原创 2019-08-30 10:51:41 · 4898 阅读 · 1 评论 -
微信红包算法实现
微信红包算法的实现:二倍均值法和线段切割法微信红包分析n元的手气红包,假设发放m个:1、m个红包的总额为n元。2、每个红包至少0.01元。3、每个红包大小的概率一样。最直观的依次以剩余金额减去0.01×剩余红包数(保证不会出现前面几个红包用完所有的金额)为上限产生m个随机数,但这很显然越前面抢的人,红包金额越大的概率越大。原创 2019-09-06 23:08:51 · 1863 阅读 · 0 评论 -
01背包问题、优化及变形
01背包问题的动态规划实现以及优化;考虑是否需要恰好装满背包时的情况。原创 2019-09-09 16:33:07 · 475 阅读 · 0 评论 -
任意2n个正整数数组,将其分割成两个长度为n的数组,使两子数组之和的差值最小
题目描述:任意2n个正整数数组,将其分割成两个长度为n的数组,使两子数组之和的差值最小。或者:从2n个正整数中选取n个,使这n个数字之和和剩余n个数字之和的差值最小。这道题利用动态规划进行求解,可以采用0-1背包问题的策略,放或者不放,不太了解0-1背包的,参考链接https://blog.youkuaiyun.com/qq_34826261/article/details/100663768。假设数...原创 2019-09-15 14:05:24 · 1482 阅读 · 0 评论