小景哥哥

世界很大,而我们还需要再成长!

强烈推荐

48.不用加减乘除做加法

    48.不用加减乘除做加法

    题目描述

    写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
     


    public class Solution {
        public int Add(int num1,int num2) {
            int sum, carry;
            do{
                sum = num1 ^ num2;
                carry = (num1 & num2) << 1;
                num1 = sum;
                num2 = carry;
            }while(num2 != 0);
            return num1;
        }
    }

    阅读全文>>

作者:Jason分类:【offer浏览(144评论(0

2018-08-24

1036. 跟奥巴马一起编程(15)-浙大PAT乙级真题java实现

    1036.跟奥巴马一起编程(15) 
    美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧! 
    输入格式: 
    输入在一行中给出正方形边长N(3<=N<=20)和组成正方形边的某种字符C,间隔一个空格。 
    输出格式: 
    输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。 
    输入样例: 
    10 a 
    输出样例: 
    aaaaaaaaaa 
    a               a 
    a               a 
    a               a 
    aaaaaaaaaa


    阅读全文>>

作者:Jason分类:【pat浏览(233评论(0

2018-01-23

积极废人

    积极废人,指那些“爱给自己立flag,但永远做不到的人;尽管心态积极向上,行动却宛如废物,他们往往会在间歇性享乐后恐慌,时常为自己的懒惰自责。

     

    “积极废人”,尽管心态积极向上,行动却宛如废物”。Flag(意指公开树立的目标)太多,但时间太少,想偷懒的念头太多,但执行力太差,似乎成了不少人的通病,这也是“积极废人”一词能有市场的现实基础。

     

     

    离毕业论文还有两个月期限时,就立志“日行百字”,然而每天依旧睡到日上三竿,无所进展,硬生生拖到最后几天,才在“死线”的催赶和内心焦虑的折磨下,激发出“无限潜力”;大家天天嚷嚷自己太胖,找不到好看的小哥哥和小姐姐做朋友,因此要“每天奔赴健身房,一个月瘦15斤”,最终却总是在迈入健身房的前一分钟被下午茶的魅力勾走,一个月下来别说瘦了,可能还胖了五六斤。那些flag常活在我们的心里和口头上,却始终无法成为现实。

     

    “积极废人”一词中存在一对显著的矛盾:“积极”与“废人”。积极的心态,显然体现在他们的壮志豪情上,然而“废人”却不一定在说他们能力不足,只不过他们的行动力真的差到了极点。对这些人而言,想行动的念头活不过三秒钟,就被滚滚而来的懒惰念头“拍死”了。

     

    要想避免自己成为“积极废人”,最重要的还是要有执行力。对那些要写毕业论文的大学生来说,不开始搭个框架、写个绪论,后面的论文内容是不会自己平白无故生出来的。对那些想健身减重的人,不到健身房举铁,不在跑步机上跑个四五十分钟,又哪里谈得上取得成果呢?万事开头难,坚持下去则更难。

     

    与此同时,制定一个切实可行的目标也很重要,不要一味只想着让说出去的flag听起来好听,让自己看上去非常积极,但到结果上却无法完成,成为“废人”。“跳一跳就能够得着”的目标更容易让我们去付诸行动,而不是畏难而退,服于懒惰。

    立flag不是不行,但是,一旦立了,就要把它扶稳。Flag立得再多,只有实现得多,才是一个真正积极向上的好青年。我们要让积极的心态得以持续,而不能让一个“积极的人”变成“积极废人”。一字之差,差的只是落实的决心。

     

    懒癌晚期的我们,很多时候,总是持续性的混吃等死,间接性的踌躇满志。希望我们都可以仅仅立一个flag,然后把持之以恒铭记于心,并付诸努力,去追求自己的目标并为之付出等值的心血。

     

    愿你不要整天葛优瘫,愿你是一个积极、阳光、开朗的人,而不是一个积极废人。

     

    阅读全文>>

作者:小度分类:【热词浏览(305评论(0

2018-05-11

合并两个排序的链表

    16.合并两个排序的链表

     

    题目描述

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

    解题思路:采用递归。

     


    public class ListNode {
        int val;
        ListNode next = null;

        ListNode(int val) {
            this.val = val;
        }
    }

    public class Solution {
        public ListNode Merge(ListNode list1,ListNode list2) {
            if(list1 == null)
                return list2;
            else if(list2 == null)
                return list1;
            ListNode pMergedHead = null;
            if(list1.val < list2.val){
                pMergedHead = list1;
                pMergedHead.next = Merge(list1.next, list2);
            }else{
                pMergedHead = list2;
                pMergedHead.next = Merge(list1, list2.next);
            }
            return pMergedHead;
        }
    }

    阅读全文>>

作者:Jason分类:【offer浏览(171评论(0

2018-08-13

细观美剧

     

    作为一个不折不扣的美剧迷,我内心澎湃的小宇宙喷薄而出,细观美剧,感悟颇多。

    从《神盾局特工》到《闪电侠》,从《生活大爆炸》到《破产姐妹》,从《疑犯追踪》到《哥谭》,从《权利的游戏》到《西部世界》,从《天赋异禀》到《行尸走肉》,从《黑镜》到《福尔摩斯》,从《越狱》到《罪恶黑名单》,…,在美剧的世界里,你可以被强大的剧情牵引着,在扣人心弦的场景中遨游,在惊心动魄的格斗中历练,那感觉无与伦比。

    你可以跟着Coulson坐着昆式战斗机在世界各地穿越,你可以跟着quaker Daisy去震动全世界,你可以跟着Oliver或James去拯救一座城市,你可以跟着Max体验开放的美国文化,你可以跟着Shelden做去一个奇葩,你可以跟着Harry去93/4站台体验一个魔幻的奇妙世界,有太多的人物,有太多的角色,有太多的精彩,也有太多的无奈,但是美国大片的总体态势到最后都是英雄救美,完美结局。假如你看到最后结局很凄美,那我可以肯定的告诉你,你看的是假美剧。

    感悟一:需要很好的美国文化才能get到他们的笑点

    对于一些情景喜剧,比如《生活大爆炸》、《破产姐妹》等这种类型的美剧,真的需要一定的文化底蕴,才能在欣赏的过程中,体会他们所要表达的完整意义,才能get到他们的笑点,才能更好的了解到西方的文化底蕴和人文内涵。

    感悟而二:看美剧并不是仅仅浪费时间,真的可以提高英语水平

    英语一直作为短板的我,六级也是考了几次才低分飘过的人,在我考研的时候,每天都会看一集美剧,风雨无阻,大家都知道对于非英语专业的理科生来说英语单科分数线也就40分多一点,那年我的英语一成绩82(总分100),这对于一个非英语专业的普通人来说,已经相当可以了。

    感悟三:开拓视野,增长见识

    艺术来源于生活却高于生活。从体验美国文化层面来讲,还是能从一个侧面感受到开放的美国人民的生活气息,理解他们包容的意识形态,以及进取的人生态度。另一方面,不仅从感官上体验感受了一把视觉享受,还激发了想象力的脑洞,也拓展了你感知社会的眼光。

     记得字幕组、天天美剧这样的网站招募人员要求是必须看过100部美剧以上,我心里嗖的乐呵一下,奶奶的,老子看了200部也有了,虽然我口语不好,但是我听力好啊。

    我夜以继日的加班加点刷完了所有我喜欢看的美剧,然后突然就遇到了空前浩大的剧荒,没有一个可以看的了,这种感觉完全吞噬了我的小小内心,不知所措。苍天啊,大地啊,请赐予我一集美剧吧!

    问题:

    神盾局的Yoyo和闪电侠Barry谁更快?

    星际迷航为啥在太空中还能有声音?真空中不是没有粒子震动么?太空中没有空气,为啥会有火焰?

    钢铁侠遇到Max会出现什么情况?(这俩人都很好色)

    Michael和Imp合作越狱会不会更快一点?

    Finch和Sky谁的IT技术更牛?

    龙母是不是应该嫁给Oliver Queen而非John Snow?因为他俩经历很像啊。

     

    剧情:

    《神盾局》,最喜欢的美剧,没有之一。科幻+动作+大英雄主义,想象无边际,只有你想不到,没有做不到,各种奇异的人,各种奇妙的世界,完美无比。为捍卫正义可以牺牲一切。

    《闪电侠》,让Barry带你怀揣梦想穿越时空,拯救世界。

    《生活大爆炸》,一群个性独特的人毁你三观带你感悟生活,每三句话就出一个笑点,你要不笑那是因为你没文化。

    《破产姐妹》,大尺度带你闯进美国社会底层人民的生活。

    《哥谭》,为了心中的信仰拯救一座城。

    《行尸走肉》,人性的格斗。

    《黑镜》,科技太发达,脑洞大开。

     

     

     

     

    阅读全文>>

作者:Jason分类:【心情浏览(371评论(0

2018-04-13

顺时针打印矩阵

    19.顺时针打印矩阵
    题目描述
     
    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
     
    解题思路:首先判断矩阵可以循环多少个圆圈,利用矩阵行数和列数的最小值求可以循环的圈数,然后确定当前圈的四个点,来顺时针遍历当前圈的矩阵元素,直到把所有圈循环完毕。
     
     

     


    public ArrayList<Integer> printMatrix(int[][] array) {

            ArrayList<Integer> result = new ArrayList<Integer>();

            if (array.length == 0)

                return result;

            int rows = array.length, columns = array[0].length;

            if (array == null)

                return result;

            int layers = Math.min(rows, columns) / 2 + Math.min(rows, columns) % 2;// 这个是层数(圈数),偶数时正好可以整除,奇数时相当于先加1再除以2

            int i,j,k;

            for (i = 0; i < layers; i++) {

                for(j = i; j <= columns - i - 1; j++)

                    result.add(array[i][j]);

                for(k = i + 1; k <= rows - i - 1; k++)

                    result.add(array[k][j - 1]);

                for(j = columns - i -2; j >= i && rows - i - 1 > i && columns - i - 1 > i; j--)

                    result.add(array[k - 1][j]);

                for(k = rows - i - 2; k > i && columns - i - 1 > i && rows - i - 2 > i;k--)

                    result.add(array[k][j + 1]);

            }

            return result;

        }


     

    阅读全文>>

作者:Jason分类:【offer浏览(166评论(0

2018-08-13

60.把二叉树打印成多行

    60.把二叉树打印成多行
    题目描述
    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
     
     
    import java.util.ArrayList;
    import java.util.Queue;
    import java.util.LinkedList;
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
        public TreeNode(int val) {
            this.val = val;
        }
    }
    public class Solution {
        public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
             ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
             if(pRoot == null)
                 return list;
             Queue<TreeNode> q = new LinkedList<TreeNode>();
             q.add(pRoot);
             while(!q.isEmpty()) {
            int l = 0, h = q.size();
            ArrayList<Integer> temp = new ArrayList<>();
            while(l++ < h) {
            TreeNode tn = q.poll();
                temp.add(tn.val);
                if(tn.left != null)
                q.add(tn.left);
                if(tn.right != null)
                q.add(tn.right);
            }
            list.add(temp);
             }
             return list;
         }
    }
    阅读全文>>

作者:Jason分类:【offer浏览(128评论(0

2018-08-25

42.和为S的两个数字

    42.和为S的两个数字

    题目描述

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
    输出描述:
    对应每个测试案例,输出两个数,小的先输出。

     


    import java.util.ArrayList;
    import java.util.Collections;
    public class Solution {
        public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            
            if(array.length < 1)
                return list;
            int ahead = array.length - 1;
            int behind = 0;
            
            while(ahead > behind){
                long curSum = array[ahead] + array[behind];
                if(curSum == sum){
                    list.add(array[ahead]);
                    list.add(array[behind]);
                    break;
                }else if(curSum > sum)
                    ahead--;
                else behind++;
            }
            Collections.sort(list);
            return list;
        }
    }

    阅读全文>>

作者:Jason分类:【offer浏览(165评论(0

2018-08-24

1051. 复数乘法 (15)-浙大PAT乙级真题java实现

    1051. 复数乘法 (15) 
    复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式(R(cos(P) + isin(P))。 
    现给定两个复数的R和P,要求输出两数乘积的常规形式。 
    输入格式: 
    输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间以空格分隔。 
    输出格式: 
    在一行中按照“A+Bi”的格式输出两数乘积的常规形式,实部和虚部均保留2位小数。注意:如果B是负数,则应该写成“A-|B|i”的形式。 
    输入样例: 
    2.3 3.5 5.2 0.4 
    输出样例: 
    -8.68-8.23i


    思路:

     

     

     

     

     

     


     

    阅读全文>>

作者:Jason分类:【pat浏览(254评论(0

2018-01-26

1027. 打印沙漏(20)-浙大PAT乙级真题java实现

    1027. 打印沙漏(20) 
    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印


    
    

     

     

     


    所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

    给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

    输入格式:

    输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。

    输出格式:

    首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

    输入样例: 
    19 * 
    输出样例:


    
    

     

     

     


     

     

    阅读全文>>

作者:Jason分类:【pat浏览(221评论(0

2018-01-18