算法
Summersadness8
I won't give in to the insanity, chasing all the stars
展开
-
Leetcode中组合总和系列
一、Leetcode77. 组合1、题目给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]2、思路回溯算法,思路如图所示3、代码class Solution { List<List<Integ...原创 2019-10-19 16:36:48 · 1113 阅读 · 0 评论 -
LeetCode264. 丑数 II
题目:编写一个程序,找出第n个丑数。丑数就是只包含质因数2, 3, 5的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1是丑数。 n不超过1690。class Solution { public int nthUglyNumber(int n)...原创 2019-03-27 21:19:01 · 93 阅读 · 0 评论 -
LeetCode504. 七进制数
题目:给定一个整数,将其转化为7进制,并以字符串形式输出。示例 1:输入: 100输出: "202"示例 2:输入: -7输出: "-10"注意:输入范围是[-1e7, 1e7]class Solution { public String convertToBase7(int num) { if(num == 0) ...原创 2019-03-27 21:21:03 · 191 阅读 · 0 评论 -
LeetCode54. 螺旋矩阵
题目:给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,1...原创 2019-03-27 21:24:43 · 121 阅读 · 0 评论 -
LeetCode24. 两两交换链表中的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.非递归版本class Solution { public ListNode swapPairs(ListNode head) { ...原创 2019-03-27 21:27:44 · 105 阅读 · 0 评论 -
LeetCode299. 猜数字游戏
题目:你正在和你的朋友玩猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜。每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位数字猜对了但是位置不对(称为“Cows”, 奶牛)。你的朋友将会根据提示继续猜,直到猜出秘密数字。请写出一个根据秘密数字和朋友的猜测数返回提示的函数,用A表示公牛,用B表示奶牛。...原创 2019-03-27 21:32:35 · 572 阅读 · 0 评论 -
LeetCode481. 神奇字符串
题目:神奇的字符串S只包含 '1' 和 '2',并遵守以下规则:字符串S是神奇的,因为串联字符 '1' 和 '2' 的连续出现次数会生成字符串S本身。字符串S的前几个元素如下:S= “1221121221221121122 ......”如果我们将S中连续的 1 和 2 进行分组,它将变成:1 22 11 2 1 22 1 22 11 2 11 22 .....原创 2019-03-27 21:36:58 · 280 阅读 · 0 评论 -
LeetCode12. 整数转罗马数字
题目罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并...原创 2019-03-27 21:41:33 · 134 阅读 · 0 评论 -
LeetCode71. 简化路径
题目:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠/开头,并且两个目录名之...原创 2019-03-27 21:51:25 · 100 阅读 · 0 评论 -
位运算总结
"<<" 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。">>>"运算:右边的位被挤掉,对于左边移出的空位一概补上0。按位与&:清零特定位 (mask中特定位置0,其它位为1,s=s&a...原创 2019-03-28 21:41:44 · 135 阅读 · 0 评论 -
LeetCode518. 零钱兑换 II
题目:给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入: amount = 3, coins = [2]输出...原创 2019-03-29 11:01:43 · 401 阅读 · 0 评论 -
Map统计出现频率并按频率大小逆序输出
题目描述:测试团队里,我们会对多个应用进行覆盖率统计,比如应用A,B,C.....N,现在我们希望统计出代码覆盖率在<=20,21~50,51~70以及>70这几个区间内的应用个数,并按照应用个数由大到小的顺序对这几个区间进行排序输入:A:45,C:35,D:9,F:43,M:10,G:90输出:21~50:3,<=20:2,>70:1,51~70:0...原创 2019-04-09 10:54:09 · 319 阅读 · 0 评论 -
书架排书 逆序对
PayPal的一道笔试题,一个数组每一行代表书架上书的编号,每一行数组都有一个逆序对,想从逆序对小的开始排每一行的书,输入行数N,列数k, 以及N*k的数组;输出一个数组比如输入输出计算数组逆序对的函数是剑指offer上的,写出来不难,关键是怎么按照逆序对的大小把对应数组的顺序变换过来数组直接输出有一个简单方法 Arrays.deepToString(num);i...原创 2019-04-09 13:55:39 · 222 阅读 · 0 评论 -
Java十进制、二进制、八进制、十六进制之间的转换
一、十进制转二进制方法一:输入一个十进制数n,每次用n除以2,把余数记下来,然后再用商去除以2……依次循环,直到商为0结束,把余数倒着依次输出即为转换后的二进制public void decimalToBinary(int n){ String res = ""; while(n != 0){ res = n % 2 + res; n = n /...原创 2019-10-09 21:04:19 · 979 阅读 · 0 评论 -
LeetCode263. 丑数
题目:编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数2, 3, 5的正整数。示例 1:输入: 6输出: true解释: 6 = 2 ×3示例 2:输入: 8输出: true解释: 8 = 2 × 2 ×2示例3:输入: 14输出: false 解释: 14 不是丑数,因为它包含了另外一个质因数7说明:1是丑数。 ...原创 2019-03-27 21:17:18 · 98 阅读 · 0 评论 -
背包问题求方案数
题目:有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最优选法的方案数。注意答案可能很大,请输出答案模1e9+7的结果。输入格式第一行两个整数,N,V用空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个整数vi,wi用...原创 2019-04-10 11:27:18 · 1074 阅读 · 0 评论 -
完全背包问题
题目:有N种物品和一个容量是V的背包,每种物品都有无限件可用。第i种物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行两个整数vi,wi用空格隔开,分别表示第i种物品的体积和价值。输出格式输出...原创 2019-03-24 19:33:12 · 217 阅读 · 0 评论 -
LeetCode416. 分割等和子集
题目:给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100 数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例2:输入: [1, 2, 3, 5]输出: false解释:...原创 2019-03-25 10:53:28 · 210 阅读 · 0 评论 -
LeetCode494. 目标和
题目:给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号+和-。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释: -1+1+1+1+1 = 3+1-1+1...原创 2019-03-25 11:34:46 · 276 阅读 · 0 评论 -
LeetCode322. 零钱兑换
题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: ...原创 2019-03-25 14:08:42 · 152 阅读 · 0 评论 -
LeetCode474. 一和零
题目:在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着m个0和n个1。另外,还有一个仅包含0和1字符串的数组。你的任务是使用给定的m个0和n个1,找到能拼出存在于数组中的字符串的最大数量。每个0和1至多被使用一次。注意:给定0和1的数量都不会超过100。 给定字符串数组的长度不会超过600。...原创 2019-03-29 14:01:50 · 394 阅读 · 0 评论 -
LeetCode377. 组合总和 Ⅳ
题目:给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。示例:nums = [1, 2, 3]target = 4所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。因此输出为 7。第一次做觉得就是个简单...原创 2019-03-29 14:48:13 · 297 阅读 · 0 评论 -
多重背包问题 II
题目有N种物品和一个容量是V的背包。第i种物品最多有si 件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V 用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行三个整数vi,wi,si,用空格隔开,分别表示第ii种物品的体积、价值和数量。...原创 2019-03-26 17:12:01 · 273 阅读 · 0 评论 -
最后剩下的数
今天PayPal笔试第一道热身题,和剑指offer上的一题很像,剑指offer上是每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回...原创 2019-03-30 21:32:22 · 190 阅读 · 0 评论 -
混合背包问题
题目:有N种物品和一个容量是V的背包。物品一共有三类:第一类物品只能用1次(01背包); 第二类物品可以用无限次(完全背包); 第三类物品最多只能用sisi次(多重背包);每种体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V用空格隔开,分别表示物品种数和背包容...原创 2019-03-26 19:42:10 · 1967 阅读 · 1 评论 -
二维费用的背包问题
题目:有NN件物品和一个容量是VV的背包,背包能承受的最大重量是MM。每件物品只能用一次。体积是vivi,重量是mimi,价值是wiwi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。输入格式第一行两个整数N,V, M 用空格隔开,分别表示物品件数、背包容积和背包可承受的最大重量。接下...原创 2019-03-26 20:09:47 · 445 阅读 · 0 评论 -
分组背包问题
题目有N组物品和一个容量是V的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是vij,价值是wij,其中i是组号,j是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数N,VN,V,用空格隔开,分别表示物品组数和背包容量。接下来有N 组数据:每组数据第一...原创 2019-03-26 21:12:31 · 1325 阅读 · 0 评论 -
冒泡排序
昨天做题目输入输出语句搞了好久,心态炸了,所以决定把以前做过的题目加上完整的输入输出语句再重新做一遍,明明会的题目,因为紧张和一些细节没处理好没跑过真的难受极了╥﹏╥...import java.util.*;class Main{ public static void main(String[] args){ ArrayList<Integer> li...原创 2019-03-24 10:08:43 · 106 阅读 · 0 评论 -
最长公共子串
以前这道题和最长公共子序列老是搞混,于是死记硬背,动态规划的转换公式如果当前元素匹配,dp[i][j]=1 +dp[i-1][j-1],否则dp[i][j] = 0;这道题目动态规划做的答案dp数组的大小设定有的是dp[str1.length()+1][str2.length()+1]的版本,有的是dp[str1.length()][str2.length()]的版本,两种初始化不同,下标写的时候...原创 2019-03-24 10:35:08 · 12551 阅读 · 7 评论 -
01背包问题
题目:有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V用空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个整数vi,wi用空格隔开,分别表示第i件物品的体积和价值。输出格式输出一个整数,表示...原创 2019-03-24 18:46:49 · 590 阅读 · 0 评论