小景哥哥

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

强烈推荐

北大or港大 学霸修炼双城记--笔记摘要

    1.无论我们生活在哪个社会,处在哪个阶层,从事何种职业,无论我们生活困难到何种地步或高大上到何种境界,哪怕沦落到沿街乞讨,我们的一生也要为实现理想而奋斗不息。

    2.不害怕更深层的含义:不害怕孤单,不害怕未知,独立前行是迈向勇敢的第一步。

    3.我从来不怕,不怕别人对我的轻蔑、鄙视、怀疑和不满,也不怕外部环境的各种刁难,即使它恶劣到了极致。

    4.格物,致知,正心,修身。

    5.大学是单纯的,生活是混沌的。但愿你读完大学,当你逐步开始平凡的生活,你能以大学里的思索和认知为起点,能不断完善和审问自己,做一个宽容而坚定的人,做一个有君子之风的人。

    6.我们不必仅以好和坏、喜和悲、优和劣这么简单的字眼来判断和选择每一段人生经历,因为若干年后所有好的坏的你都会笑着说出来。作为年轻人,多唱唱酸甜苦辣,多品品悲欢离合,多过过不一样的生活,也许才能生活得更加丰富。

    7.独立丰满的性格是人生最大的财富。因为一个人的性格是否丰满、充满正能量,要比他学会多少知识重要一万倍。

    8.知识本身并不能创造快乐,知识只有内化成独立的思考力、丰满的价值观、强大的内心和真正的自信,才能创造出快乐、满足感、成就感。

    9.以世界为课本,而不是以课本为世界。

    10.完整的人十大特征:

    第一,Mercy,悲悯。

    第二,Tolerance,宽容。

    第三,Curiosity,好奇心。

    第四,Humility,谦卑。

    第五,Honesty,诚实。

    第六,Critical Thinking,批判性思维。

    第七,Empathy,同理心。

    第八,Insight,洞见。

    第九,Grace,优雅。

    第十,Love,爱。

    11.积极的活着:读万卷书,行万里路,阅人无数,寻师者与贵人,最后是自悟。

    12.走向智慧的第一步就是承认这个世界的不确定性,太确定意味着你很容易走极端。

    13.吃苦和谦逊。吃苦主要是指思想上迎难而上的品质。


    注:以上内容均摘自孙海亮的北大or港大学霸修炼双城记。

    偶像的刚出了一本新书,《让成长带你穿透迷茫》已经买下了,之后读完更新读书感悟。另外《向前一步》也很入我的眼球,也会尽快阅读,之后再与大家分享。

    阅读全文>>

作者:Jason分类:【读书笔记浏览(1032评论(0

2018-01-28

56.删除链表中重复的结点

    56.删除链表中重复的结点

    题目描述

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
     



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

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

    public class Solution {
        public ListNode deleteDuplication(ListNode pHead)
        {
            if(pHead == null)
                return null;
            if(pHead != null && pHead.next == null)
                return pHead;
            ListNode current;
            if(pHead.next.val == pHead.val){
                current = pHead.next.next;
                while(current != null && current.val == pHead.val)
                    current = current.next;
                return deleteDuplication(current);
            }else{
                current = pHead.next;
                pHead.next = deleteDuplication(current);
                return pHead;
            }
            
        }
        
    }

     

     

     

    阅读全文>>

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

2018-08-25

1028. 人口普查(20)-浙大PAT乙级真题java实现

    1028. 人口普查(20) 
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。 
    输入格式: 
    输入在第一行给出正整数N,取值在(0, 10^5];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。 
    输出格式: 
    在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。 
    输入样例: 

    John 2001/05/12 
    Tom 1814/09/06 
    Ann 2121/01/30 
    James 1814/09/05 
    Steve 1967/11/20 
    输出样例: 
    3 Tom John


    阅读全文>>

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

2018-01-18

合并两个排序的链表

    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浏览(375评论(0

2018-08-13

28.数组中出现次数超过一半的数字

    28.数组中出现次数超过一半的数字

    题目描述

    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。



    import java.util.Arrays;
    public class Solution {
        public int MoreThanHalfNum_Solution(int [] array) {
            if(array.length <= 0)
                return 0;
            if(array.length == 1)
                return array[0];
            Arrays.sort(array);
            int length = array.length;
            if(length % 2 == 0 && array[length / 2 - 1] == array[length / 2]){
                return array[length / 2];
            }else if(length % 2 == 1 && array[length / 2] == array[length / 2 + 1])
                return array[length / 2];
            else 
                return 0;
        }
    }

    //方法二,基于快速排序算法思想

        public int MoreThanHalfNum_Solution(int[] array) {

            if (array == null || array.length == 0)

                return 0;

            int middle = array.length >> 1;

            int start = 0;

            int end = array.length - 1;

            int index = Partition(array, start, end);

     

            while (index != middle) {

                if (index > middle) {

                    end = index - 1;

                    index = Partition(array, start, end);

                } else {

                    start = index + 1;

                    index = Partition(array, start, end);

                }

            }

            int result = array[middle];

            if (!CheckMoreThanHalf(array, result))

                result = 0;

            return result;

        }

     

        public static boolean CheckMoreThanHalf(int array[], int number) {

            int times = 0;

            for (int i = 0; i < array.length; ++i) {

                if (array[i] == number)

                    times++;

            }

            boolean isMoreThanHalf = true;

            if (times * 2 <= array.length) {

                isMoreThanHalf = false;

            }

            return isMoreThanHalf;

        }

     

        public static int Partition(int array[], int start, int end) {

            int pivotkey = (int) start + (int) Math.random() * (end - start);

            while (start < end) {

                while (start < end && array[end] >= array[pivotkey])

                    end--;

                int temp = array[start];

                array[start] = array[end];

                array[end] = temp;

                while (start < end && array[start] <= array[pivotkey])

                    start++;

                temp = array[start];

                array[start] = array[end];

                array[end] = temp;

            }

            return start;

        }

    阅读全文>>

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

2018-08-23

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浏览(529评论(0

2018-01-23

读书就是为了垒人设

          读书就是为了垒人设

           我来自上海,一个诗和远方并存的城市。

           在这个大千花花世界,每个人都想做一个有情怀的人,魔都更甚。我们不属于律师八大红圈,也融入不了五大银行,可内心却向往着五湖四海,我们想做一个有情怀的技术人,所以心中总有按捺不住的躁动,七大洲四大洋已在小小内心汹涌翻滚,想要追求诗和远方。

           毕竟技术仅仅是技术,只能在日常碾压我们的承受底线,情怀是一个多么奢侈的字眼。做一个有情怀的技术人,才能获得个人精神层面的满足和怡然自得。

           可能与世界对话最便捷、最经济、最有效、最实在的方式就是读书了吧,这里用的是可能。毕竟飞机太贵,轮船太慢,景区太挤,乡村大自然太偏,所以我们选择读书来充实自己,来构造自己B格高人一等的人设。站在巨人的肩膀上,扩展自己的眼界与学识,拓宽自己看问题的广度和深度。

    知识的储备会决定你活成一个什么样的人。经济学家和政治学家、诗人和工人、艺术家和企业家的视野总是千篇一律的不同。你通过读书获得的知识,会百分之百地决定你的人设。这些知识会像一个全方位立体化环绕的剧本,360度无死角的影响你人生种种可能的走向。同样,你自身修身、治国、平天下独一无二的人设,会反过来作用于你对于书籍的选择,这是一个双向满足的过程。最好的例子其实就是不同的时期,人设不同,你读的书也不一样。你读过的书形成了你的气质和精神需求。

    正是由于千千万万本书累计在我们心中,才造就了世界上各式各样的人。有些人大气豪放,有些人婉约内敛。就好像,你需要任何一种知识、一种技能,都可以在书中获得。比如说做饭、育儿、撩妹、PS、黎曼猜想的证明、欧洲旅行攻略、摄影、素描……

    世界没那么容易,读书并不是没什么卵用,但书不是万能的。所以说书是牛逼的,是必需品,读书可能不一定能改变世界,但可以改变你自己,make a difference。放眼望去读书的峥嵘岁月你会意识到,读书就是为了垒人设。

    不管出于什么目的读书,总是开卷有益的。

    这些所谓的功利性和非功利性的目的的集合,都是让你从一张白纸活到一本鲜活的自传。它有无数种方法和途径作用你的人生,但是最后,都是会让你成为一个让你自己充满期盼,或是意想不到的人,不管是坏的还是好的。

    所以说,读书还是很重要的,因为没有人想在王子救公主的故事里活成一个苍白毫无定义的NPC。

    毕竟谁对于自己人生的终极人设,不是主角呢?

    读书的作用,其实很简单,就是“垒人设”。

    我一点都不想祝你成长为一个出色的大人,我就想祝你永远不要把世界活成理所当然的样子。你得有自己的模样,腹有诗书气自华的模样。

    书是爱情,书是生活,书是未来。

    阅读全文>>

作者:Jason分类:【读书浏览(935评论(0

2018-09-30

1052. 卖个萌 (20)-PAT乙级真题java实现

    1052. 卖个萌 (20)-PAT乙级真题java实现

    萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的: 
    [左手] ([左眼][口][右眼])[右手] 
    现给出可选用的符号集合,请你按用户的要求输出表情。 
    输入格式: 
    输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过10个符号;每个符号包含1到4个非空字符。 
    之后一行给出一个正整数K,为用户请求的个数。随后K行,每行给出一个用户的符号选择,顺序为左手、左眼、口、右眼、右手——这里只给出符号在相应集合中的序号(从1开始),数字间以空格分隔。 
    输出格式: 
    对每个用户请求,在一行中输出生成的表情。若用户选择的序号不存在,则输出“Are you kidding me? @\/@”。 
    输入样例: 
    [╮][╭][o][~][/~] [<][>] 
    [╯][╰][^][-][=][>][<][@][⊙] 
    [Д][▽][_][ε][^] … 

    1 1 2 2 2 
    6 8 1 5 5 
    3 3 4 3 3 
    2 10 3 9 3 
    输出样例: 
    ╮(╯▽╰)╭ 
    <(@Д=)/~ 
    o(^ε^)o 
    Are you kidding me? @\/@

     

     
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String h = sc.nextLine().trim();
            String[] hands = h.substring(h.indexOf("[") + 1, h.lastIndexOf(']')).split("\\]\\s*\\[");
            String e = sc.nextLine().trim();
            String[] eyes = e.substring(h.indexOf("[") + 1, e.lastIndexOf(']')).split("\\]\\s*\\[");
            String m = sc.nextLine().trim();
            String[] mouths = m.substring(h.indexOf("[") + 1, m.lastIndexOf(']')).split("\\]\\s*\\[");
     
            int n = Integer.parseInt(sc.nextLine());
            for (int i = 0; i < n; i++) {
                String[] in = sc.nextLine().split("\\s+");
                String temp = "";
                boolean flag = true;
                if (Integer.parseInt(in[0]) <= hands.length) {
                    temp = temp + hands[Integer.parseInt(in[0]) - 1] + "(";
                } else {
                    System.out.println("Are you kidding me? @\\/@");
                    flag = false;
                    continue;
                }           
                if (Integer.parseInt(in[1]) <= eyes.length) {
                    temp = temp + eyes[Integer.parseInt(in[1]) - 1];
                } else {
                    System.out.println("Are you kidding me? @\\/@");
                    flag = false;
                    continue;
                }            
                if (Integer.parseInt(in[2]) <= mouths.length) {
                    temp = temp + mouths[Integer.parseInt(in[2]) - 1];
                } else {
                    System.out.println("Are you kidding me? @\\/@");
                    flag = false;
                    continue;
                }            
                if (Integer.parseInt(in[3]) <= eyes.length) {
                    temp = temp + eyes[Integer.parseInt(in[3]) - 1];
                } else {
                    System.out.println("Are you kidding me? @\\/@");
                    flag = false;
                    continue;
                }          
                if (Integer.parseInt(in[4]) <= hands.length) {
                    temp = temp + ")" + hands[Integer.parseInt(in[4]) - 1];
                } else {
                    System.out.println("Are you kidding me? @\\/@");
                    flag = false;
                    continue;
                }
                if (flag) {
                    System.out.println(temp);
                }              
            }
        }
    }

     

    阅读全文>>

作者:小景分类:【pat浏览(392评论(0

2018-09-07

1006. 换个格式输出整数 (15)-浙大PAT乙级真题java实现

    1006. 换个格式输出整数 (15)
    让我们用字母B来表示“百”、字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。
    输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。
    输出格式:每个测试用例的输出占一行,用规定的格式输出n。
    输入样例1:
    234
    输出样例1:

    BBSSS1234
    输入样例2:
    23
    输出样例2:
    SS123


    阅读全文>>

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

2018-01-04

1038. 统计同成绩学生(20)-浙大PAT乙级真题java实现

    1038. 统计同成绩学生(20) 
    本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出。 
    输入格式: 
    输入在第1行给出不超过 10^5 的正整数N,即学生总人数。随后1行给出N名学生的百分制整数成绩,中间以空格分隔。最后1行给出要查询的分数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。 
    输出格式: 
    在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。 
    输入样例: 
    10 
    60 75 90 55 75 99 82 90 75 50 
    3 75 90 88 
    输出样例: 
    3 2 0


    阅读全文>>

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

2018-01-23