资讯专栏INFORMATION COLUMN

赛码模拟题:股神 stockmaster (java8)

张汉庆 / 1921人阅读

摘要:我认为赛码的题挺有趣的其实,所以还是值得做。还有更快的方法,举例发现股价和天数之间是有一些规律的发现同一递增周期内股价与天数的差值相同。接下来只要能总结出天数和差值的关系就能知道股价了。

题目: 股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。
为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?
例子:
输入: 1 2 3 4 5 (分别代表第1 2 3 4 5天)
输出: 1 2 1 2 3 (对应每天的股价)

输入声明:
输入包括多组数据;
每行输入一个n,1<=n<=10^9 。

赛码网的题跟Leetcode不同的是:赛码要求我们写读取输入的代码,Leetcode只要写函数就行。赛码主要使用Scanner来读取输入(有套路),题目的输入输出都挺简洁,大多只是数字,字符串或数组,不会像LeetCode的输出会有长串的链表,有些看着会很复杂。
有人说赛码的编译很不好,但有些是使用者自身代码质量问题,至少我用Java到现在没有出现过什么问题,如果编译不对可以看看别人的代码。
我认为赛码的题挺有趣的其实,所以还是值得做。

解法:

这题我一开始想用的是用递归来做,第n天的股价递归到第1天开始算起,但要注意n的范围是10^9,递归算法会导致层数太多内存溢出,所以通不过测试。还有要注意的就是n很大不能用int装,java里可以用Integer,当然double也可以。

可以两个循环一天天算,这样时间复杂度是O(n)吧,可以做。

还有更快的方法,举例发现股价和天数之间是有一些规律的:

发现同一递增周期内股价与天数的差值相同。
接下来只要能总结出天数和差值的关系就能知道股价了。
发生跳转的天数位1,3,6,10....对应的差值为0,2,4,6...
发现天数为累加和:
1=1
3=1+2
6=1+2+3
10=1+2+3+4
...
刚好差值又是线性等差
那么就可以找到这样的关系: 天数=(1+(差值/2+1))/2; 股价=天数+差值

代码:

import java.util.*;
public class Main {

    private static Integer stockPrice(Integer temp) {
        int sum = 1, count = 1;
        while(sum <= temp) {
            count++;
            sum+=count;
        }
        return  temp == 1 ? 1 : temp - 2 * (count - 2);
    }

    public static void main(String args[]) {

        Scanner cin = new Scanner(System.in);

        while (cin.hasNextInt()) {
            Integer output= 0;
            Integer temp = cin.nextInt();
            System.out.println(stockPrice(temp));

        }

        cin.close();

    }

}

时间:216ms 话说整个时间我真不确定是不是跟网速有关系。。。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66074.html

相关文章

  • 赛码网编程题--“股神

    摘要:昨天看到了赛码在线编程的一道题,热度很高。赛码股神题目是这样的涨一天,跌一天,涨两天,跌一天看似很有规律,看似很简单。给大神跪了。。。大神们的解法简单易懂的方法以上是最高票的答案。。。 昨天看到了赛码在线编程的一道题,热度很高。赛码-股神题目是这样的: showImg(https://segmentfault.com/img/bVbgMXd?w=1053&h=569); 涨一天,跌一天...

    SexySix 评论0 收藏0
  • 赛码拟题:蛇形填数 SnakeSquare (Java 8)

    摘要:题目在方阵里填入要求填成蛇形。填数的循环按照走。重点是控制蛇的方向和移动范围。假设表示行数,表示列数垂直向下,递增,不变,到达最下方变水平,递增变为递减。还有要注意矩阵下标和坐标的区别,原点位置不同,不建议用作为变量名,易混淆。 题目:在nn方阵里填入1,2,...,nn,要求填成蛇形。例如n=4时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 ...

    lk20150415 评论0 收藏0
  • java8-模拟hadoop

    摘要:的入门程序,也能实现统计单词数量程序特殊文件需要格式转换为将多个流融合为一个统计单词数量程序通过自定义统计,其实也使用的是记住凡是 hadoop的入门程序,java8也能实现 txt统计单词数量程序 @Test public void fileWordCount() throws IOException { //特殊文件需要格式转换为txt Files.readAllL...

    roundstones 评论0 收藏0
  • 京东实习生招聘题目解析(二)

    摘要:买糖果题目来源京东实习生招聘原题链接可在线提交赛码网问题描述某糖果公司专门生产儿童糖果,它最受儿童欢迎的糖果有两个序列,均采用盒式包装。小东希望你能帮她解决这一问题。 最近比较忙,又有一段时间没写题目了,终于在前几天把赛码网上,JD的2016秋招和2017实习生招聘剩下的4星难度题目做了,至此所有4星难度题目都解决了,5星难度题目还剩下一个应该是计算几何学的题目,因为这块我不熟悉,后面...

    UnixAgain 评论0 收藏0
  • 前端开发应届生面试指南(含各大公司具体指南及面试真题)

    摘要:先介绍一下本人应届前端开发一枚,非科班出身,专业是化学,大学期间开始自学前端开发,在今年春招实习和秋招的时候投了一些公司,拿到一些京东拼多多虎牙等,总体来说还算满意,特地写一篇文章来总结一下面试的那些套路。 showImg(https://segmentfault.com/img/remote/1460000011897700); 先介绍一下本人应届前端开发一枚,非科班出身,专业是化学...

    sunnyxd 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<