对不起,我只做水题,前端就是可以为所欲为。
笔试
大疆——格式化字符串
输入:1212320000.11
输出:1,212,320,000.11
1 | function formatFloat(num){ |
求区间内的素数(只能被1个本身相除)
1 | function isPrimeNumber( num ) { |
牛客
2018-08-05
给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0-10000的非负整数)的不同组合的个数。
1 | var num = parseInt(readline()); |
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
1 | var line = readline(); |
十进制X转化为N进制:(X).toString(N),X与N都是Number类型。str.toUpperCase,转化为大写。
读入一个字符串str,输出字符串str中的连续最长的数字串 (数字串本身不需要连续递增,一直理解错了。)
1 | function LargeSubString(str){ |
2018-07-11
题解:输入一个整数,求这个整数的阶乘结果末尾有多少个0。
输入:10
输出:2
1 | function count(n){ |
题解:输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No
输入:1 -2 3 4
输出:2 1 3
1 | var line = readline(); |
题解:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。 输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。
输入:
81 4
2 2
输出(保留2位小数):
94.73
3.41
1 | while(line = readline()){ |
题解:
小易喜欢的单词具有以下特性:
1.单词每个字母都是大写字母
2.单词没有连续相等的字母
3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。
1 | while(line = readline()){ |
题解:判断第二个字符串是否为第一个字符串的子串(顺序从左至右),是输出Yes,否则输出No
输入:x.nowcoder.com
输出:Yes
1 | var len1=arr1.length; |
2018-07-10
题解:给定2个字符串s1,s2,将s1中出现的s2元素删除
输入:They are students. aeiou
输出:Thy r stdnts.
1 | var s1 = readline(); |
题解:给定文件路径,求文件后缀
输入:Abc/file.txt
输出:txt
1 | function getExtension(str){ |
2018-07-08
题解:输入2个字符串A,B,将B插入A中,求新的A是回文数的个数。
输入:aba b
输出:2 (baba,abba,abba,abab,有2个abba)
1 | var count = 0; |
2018-07-07
题解:小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。
输入:输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果
输出:输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1
1 | //分三种情况,假设苹果个数n |
题解:输入n个整数,输出出现次数大于等于数组长度一半的数。 每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。
输入:3 9 3 2 5 6 7 3 2 3 3 3
输出:3
1 | while(line = readline()){ |
题解:牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。 每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。
输入:BUTTER FLOUR
HONEY FLOUR EGG
输出:4
1 | var resultArr = []; |
题解:对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如: 如果 X = 123,则rev(X) = 321; 如果 X = 100,则rev(X) = 1. 现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?
1 | function reverse(str){ |
题解:小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x)。 f(x)表示把x这个数用十进制写出后各个数位上的数字之和。如f(123)=1+2+3=6。 g(x)表示把x这个数用二进制写出后各个数位上的数字之和。如123的二进制表示为1111011,那么,g(123)=1+1+1+1+0+1+1=6。 小明同学发现对于一些正整数x满足f(x)=g(x),他把这种数称为幸运数,现在他想知道,大于0且小于等于n的幸运数有多少个?
1 | var count = 0; |
题解:Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
1 | var n = Number(readline()); |
题解:有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。
这是一个典型的递归算法问题,因为每次走法必须是往右或者是往下,因此不管是到达那个点,它的必经之路一定是它上方或者左方相邻的那个点,因此可以得出一个递归表达式:f[m][n]=f[m-1][n]+f[m][n-1];
这个递归表达式的条件为m,n都不为0的时候,除了这个表达式还需要写出一个已知条件,f[0][0] = 0;f[{1->m}][0] = 1;f[0][{1->n}] = 1;
这样就可以解出最终f[m][n]
的值了
1 | var line = readline(); |
题解:有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易,他手里有n个陷阱。第i个陷阱被安置在横坐标为xi ,纵坐标为yi 的位置上,小易一旦走入一个陷阱,将会被超超捕捉。你为了去解救小易,需要知道小易最少多少秒可能会走入一个陷阱,从而提前解救小易。
解救小易可以简单理解为从左上角到所有点中步数最小值,因为题中说明了每次都只能横走一步或者纵走一步,所以只需要将要到达的点的横纵坐标进行相加然后减去原始位置1+1即表示到达该点所需要走的步数。
1 | var num = parseInt(readline()); //陷阱个数 |
leetcode
2018-08-08更新
leetcode-414-Third Maximum Number
题解:输出数组中第三大的值
输入:[1,2,3]
输出:1
1 | var thirdMax = function(nums) { |
题解:在不适用额外空间的情况下,删除数组中的0,并置于数组最后
输入:[0,1,0,3,12]
输出:[1,3,12,0,0]
1 | var moveZeroes = function (nums) { |
2018-07-04更新
题解:输出集合的全部子集。
输入:[1,2,3]
输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]
1 | //遍历原数组,生成子集,每轮子集的生成,都依赖之前的子集,直至原集合遍历结束。 |
2018-07-02更新
题解:给定字符串1和字符串2,若字符串1能从字符串2中构造出来,返回true,否则返回false。
样例:”aa”,”aba”
输出:”true”
1 | /** |
题解:给定一个数字数组,如果数组中存在重复元素,返回true,否则,返回false
样例:[1,2,3,1]
输出:true
1 | var containsDuplicate = function(nums) { |
2018-07-01更新
leetcode-217-Contains Duplicate
题解:给定一个数组,将数组向右旋转k步,其中 k 为非负数。
样例:[1,2,3,4,5,6,7],k=3
输出:[5,6,7,1,2,3,4] ([7,1,2,3,4,5,6]->[6,7,1,2,3,4,5]->[5,6,7,1,2,3,4])
1 | var rotate = function(nums, k) { |
题解:给定一个非空数组,找出一个目标元素,目标元素在数组中出现的次数要大于(数组长度/2 )向下取整。
样例:[2,2,1,1,1,2,2]
输出:2(2出现的次数为4,4>7/2)
1 | var majorityElement = function(nums) { |
2018-06-20更新
leetcode-121-Best Time to Buy and Sell Stock
题解:给定一个数组,n个元素表示n天,每个元素代表当天股票的价格,求最大利润(买入-卖出)。假设第i天的价格最低是n,第k天的价格最大是m,maxprofit = m-n,其中i<k。
样例:[7,1,5,3,6,4]
输出:5。(第二天1元,第5天6元,6-1=5)
1 | let maxProfit = function (prices) { |
leetcode-122-Best Time to Buy and Sell Stock II
题解:假设有一个数组,其中第i 个元素是第i天给定股票的价格。 设计一个算法来找到最大的利润。您可以根据需要完成尽可能多的交易(即多次买入和卖出一次股票)。注意:不得同时进行多笔交易(即您必须在再次购买之前出售股票)。
输入:[7,1,5,3,6,4]
输出:7(在第2天买入(价格= 1)并在第3天卖出(价格= 5),利润= 5-1 = 4。然后在第4天购买(价格= 3)并在第5天卖出(价格= 6),利润= 6-3 = 3。)
1 | let maxProfit = function (prices) { |
2018-06-20更新
题解:给定一个数字数组,最后一个元素+1,输出新数组。
样例:[1,2,3,4];(1234)
输出:[1,2,3,5]。
1 | var plusOne = function(digits) { |
2018-06-02更新
题解:给定一个数组,求子序列中和最大的序列,返回最大的和
样例:[-2,1,-3,4,-1,2,1,-5,4]
输出:6([4,-1,2,1])
1 | /** |
2018-05-26更新
题解:输入一个目标值,返回目标值的平方根
样例:4 8
输出:2 2(2.8…取整)
1 | /** |
2018-05-20更新
leetcode-58- Length of Last Word
题解:给定一个以空格分隔的字符串,求最后一个单词的长度,若不存在最后一个单词,返回0
样例:”hello world”
输出:5
注意:字符串切割完成之后要进行去除空格的操作,如果去除之后数组长度为空,返回0。
1 | /** |
leetcode-28-Implement strStr()
题解:给定两个字符串,若第二个字符串为第一个字符串的子串,输出下标,否则,返回-1。
样例: haystack = “hello”, needle = “ll”
输出:2
1 | /** |
2018-05-19更新
leetcode-35-Search Insert Position
题解:给定一个排好序的数组和目标值,若数组中存在目标值,输出下标,若不存在,输出目标值若在数组中应处的下标。(可认为数组中不存在重复值)
样例:[2,4,5,7] 5
输出:2
1 | /** |
2018-05-14更新
题解:给定一个数组和一个目标值,去除数组中存在的目标值,返回数组长度,要求不使用额外空间。
样例:[2,2,3,3] , 3
输出:2
1 | /** |
2018-05-13更新
题解:给定一个数字,判断是否为回文数。
样例:121
输出:true
1 | /** |
leetcode-26-Remove Duplicates from Sorted Array
题解:给定一个排好序的数组,去除重复元素,返回数组长度,空间复杂度为O(1),不能使用辅助空间。
样例:[1,1,2]
输出:2
1 | /** |
2018-05-12更新
leetcode-14-Longest Common Prefix
题解:给定一个字符串数组,输出最长前缀,不存在输出空字符。
样例:[“flower”,”flow”,”flight”]
输出:”fl”
1 | /** |
题解:给定一串只包含’(){}[]’的字符串,进行有效性判断。
输入:{[()]}
输出:true
1 | /** |
好吧,好好复习下字符串和数组的知识,惹不起惹不起。
###2018-05-06更新
题解:给定一串罗马数字以及转化规则,计算转化结果
样例:”III”
输出:3
1 | //这题能吸收一些基础知识。。太菜了。。。 |
题解:给出一个数字,进行翻转,若翻转之后溢出,返回0。
样例:123
输出:321
1 | var reverse = function(x) { |
题解:给定一个数组和一个目标值,从数组中找出两个值得和等于目标值,输出下标。
样例:[2,7,11,15],9
输出:[0,1]
1 | /** |
2018-05-01更新
最近心情有点复杂。。。
1 | let n = parseInt(read_line()); |
好像不支持变量解构赋值。。。
2018-04-17
完全被迫无奈。。。。重新拿起了java。。。
一开始理解错题意了,以为是求某一站上下车之和最大的一个。
仔细看才发现是求车上可能的最大容量。。脑子不中用了。。
MAX(上车人数-下车人数+当前车上的人数)
1 | import java.util.Scanner; |