小景哥哥

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

强烈推荐

34.第一个只出现一次的字符

    34.第一个只出现一次的字符

    题目描述

    在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
     


    public class Solution {
        public int FirstNotRepeatingChar(String str) {

            char[] a = str.toCharArray();
            for (int i=0;i<a.length;i++){
                if (!str.substring(0,i).contains(a[i]+"")&&!str.substring(i+1).contains(a[i]+""))
                    return i;
            }
            return -1;
        }
    }

     

    阅读全文>>

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

2018-08-23

北大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分类:【读书笔记浏览(980评论(0

2018-01-28

1015. 德才论 (25)-PAT乙级真题-浙大PAT乙级真题java实现

    1015. 德才论 (25) 
    宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 
    现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 
    输入格式: 
    输入第1行给出3个正整数,分别为:N(<=10^5),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。 
    随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。 
    输出格式: 
    输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。 
    输入样例: 
    14 60 80 
    10000001 64 90 
    10000002 90 60 
    10000011 85 80 
    10000003 85 80 
    10000004 80 85 
    10000005 82 77 
    10000006 83 76 
    10000007 90 78 
    10000008 75 79 
    10000009 59 90 
    10000010 88 45 
    10000012 80 100 
    10000013 90 99 
    10000014 66 60 
    输出样例: 
    12 
    10000013 90 99 
    10000012 80 100 
    10000003 85 80 
    10000011 85 80 
    10000004 80 85 
    10000007 90 78 
    10000006 83 76 
    10000005 82 77 
    10000002 90 60 
    10000014 66 60 
    10000008 75 79 
    10000001 64 90


    阅读全文>>

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

2018-01-11

1054.求平均值 (20)-PAT乙级真题java实现

    1054.求平均值 (20)-PAT乙级真题java实现

    本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。 
    一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。 
    当你计算平均值的时候,不能把那些非法的数据算在内。

    输入格式:

    输入第一行给出正整数N(<=100)。随后一行给出N个正整数,数字间以一个空格分隔。

    输出格式:

    对每个非法输入,在一行中输出“ERROR: X is not a legal number”,其中X是输入。最后在一行中输出结果:“The average of K numbers is Y”,其中K是合法输入的个数,Y是它们的平均值,精确到小数点后2位。如果平均值无法计算,则用“Undefined”替换Y。如果K为1,则输出“The average of 1 number is Y”。

    输入样例1:



    5 -3.2 aaa 9999 2.3.4 7.123 2.35

    输出样例1:


    ERROR: aaa is not a legal number 
    ERROR: 9999 is not a legal number 
    ERROR: 2.3.4 is not a legal number 
    ERROR: 7.123 is not a legal number 
    The average of 3 numbers is 1.38

    输入样例2:



    aaa -9999

    输出样例2:


    ERROR: aaa is not a legal number 
    ERROR: -9999 is not a legal number 
    The average of 0 numbers is Undefined

     

    package top.jinglisen.pat;
    import java.util.Scanner;
    public class BL1054AC {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int cnt = 0;
            double sum = 0;
            for(int i = 0; i < n; i++) {
                double x = 0;
                String s = null;
                try {
                    s = sc.next();
                    x = Double.parseDouble(s);
                    double temp = Double.parseDouble(String.format("%.2f", x));
                    if(x > 1000 || x < -1000 || Math.abs(temp - x) >= 0.001) {
                        throw new NumberFormatException();
                    }
                    cnt++;
                    sum += x;
                }catch(NumberFormatException e) {
                    System.out.println("ERROR: " + s + " is not a legal number");
                }
            }
            sc.close();
            if(cnt == 0)
                System.out.println("The average of 0 numbers is Undefined");
            else if(cnt == 1)
                System.out.printf("The average of 1 number is %.2f",sum);
            else
                System.out.printf("The average of %d numbers is %.2f", cnt, sum / cnt);
        }
    }

     

     

    阅读全文>>

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

2018-09-07

1026. 程序运行时间(15)-浙大PAT乙级真题java实现

    1026. 程序运行时间(15) 
    要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数f的运行时间,我们只要在调用f之前先调用clock(),获得一个时钟打点数C1;在f执行完成后再调用clock(),获得另一个时钟打点数C2;两次获得的时钟打点数之差(C2-C1)就是f运行所消耗的时钟打点数,再除以常数CLK_TCK,就得到了以秒为单位的运行时间。这里不妨简单假设常数CLK_TCK为100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。 
    输入格式: 
    输入在一行中顺序给出2个整数C1和C1。注意两次获得的时钟打点数肯定不相同,即C1 < C2,并且取值在[0, 10^7]。 
    输出格式: 
    在一行中输出被测函数运行的时间。运行时间必须按照“hh:mm:ss”(即2位的“时:分:秒”) 
    格式输出;不足1秒的时间四舍五入到秒。 
    输入样例: 
    123 4577973 
    输出样例: 
    12:42:59


    阅读全文>>

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

2018-01-18

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

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


    
    

     

     

     


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

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

    输入格式:

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

    输出格式:

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

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


    
    

     

     

     


     

     

    阅读全文>>

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

2018-01-18

梦想天空分外蓝

    你把时间花在哪里,收获就会在哪里,你的梦想在哪里,你的努力就在哪里,那里的天空就分外蓝。耶和华对待每一个人都很公平,我们自己把自己的时间安排在什么地方,什么地方就会熠熠闪光。

    假如你很喜欢钢琴,比郎朗还喜欢,你可能从3岁开始就已经开始迷恋,在自觉不自觉地成长过程中,你就会花大把的时间在练习钢琴上,下课练习钢琴,晚上练习钢琴,周末练习钢琴,节假日练习钢琴,随着岁月的积累,你在钢琴上面的功夫就会在你人生道路上有所凸显,也许你超不过不了贝多芬,也许你成为不了郎朗,但是你在钢琴领域,肯定是小有名气,甚至是赫赫有名的。

    假如你很喜欢编程,你就会在潜移默化中时刻想去写代码,每天就是整天待在计算机机房里,一天敲代码几千行,还乐此不疲的想继续做下去。这样一转眼就是十年,十年的时间积淀,也许你超过不比尔盖茨,也许你赶不上乔布斯,也许你也没超过李开复,但是凭着你这么多年的付出,你最起码肯定是一个杰出的工程师,甚至还是某一领域的专家。

    假如你很喜欢英语,你就在日常中默默的做了很多学英语的事儿,每天都兴高采烈的背单词、说口语、去写作,别人娱乐可能是看一些娱乐节目消遣一下,而你消遣的方式可能就是看看美剧、和英语俱乐部的老外聊聊天,自觉不觉的就背了很多单词,看透了语法书,练就了一口标准的美音口语,还写得一手好字体。也许你在英语领域还不是一个显赫的英语教授,不像亚历山大那样能写出来《新概念》这样流行的著作,但是你肯定凭借自己优秀的英语水平,谋得一份很不错的工作。

    假如你很喜欢画画,你的房间里应该就是染料、画板、画笔的色彩斑斓的空间,你会在自己可以支配的时间,去临摹,去画画,去学习,去写生,也许你画过的画垒起来真的能超过自己的身高,真的可以说著作等身啊。在你的坚持下,你不但学会了素描,还学会了油画、水彩,你不但可以随手临摹,还可以即兴把心中所想呈现在画布上。虽然你赶不上梵高,也超不过米开朗基罗,也不如莫奈和毕加索,可是你还是小有名气,你还是觉得自己过的很快乐。

    人生最可悲的是,你喜欢的东西却没有坚持去做,每天都浑浑噩噩的度过了无聊的岁月。等到老的时候,心中一直怀揣着“我本可以的”的遗憾而心酸终老。不是说“梦想还是要有的,万一实现了呢”,而是有一种信念“假如此时不遗余力,能否给自己赢得一次第一”的捍卫和坚持自己所爱。

    没目标的人,心中无梦的人,每一天都是琐碎的,把每一天累加起来还是一个琐碎的人生。有目标的人,有梦想的人,每一天都是琐碎的,但是每一天累加起来就是一个完整的人生。

    你的梦想是什么呢?

    一天天的生活

    一边怀念 一边体验

    刚刚说了再见 又再见

    一段段的故事

    一边回顾 一边向前

    别人的情节总有我的画面

    只要有心就能看见

    从白云看到 不变蓝天

    从风雨寻回 梦的起点

    海阔天空的颜色

    就像梦想那么耀眼

    用心就能看见

    从陌生的脸 看到明天

    从熟悉经典 翻出新篇

    过眼的不只云烟

    有梦就有蓝天 相信就能看见

    美梦是个气球

    牵在手上 向往蓝天

    不管高低不曾远离 我视线

    生命是个舞台

    不用排练 尽情表演

    感动过的片段百看不厌

    只要有心就能看见

    从白云看到 不变蓝天

    从风雨寻回 梦的起点

    海阔天空的颜色

    就像梦想那么耀眼

    用心就能看见

    从陌生的脸 看到明天

    从熟悉经典 翻出新篇

    过眼的不只云烟

    相信梦想就能看见

    有太多一面之缘 值得被留恋

    总有感动的事 等待被发现

    梦想天空分外蓝 今夕何年

    Oh 看不厌

    用心就能看见

    从白云看到 不变蓝天

    从风雨寻回 梦的起点

    海阔天空的颜色

    就像梦想那么耀眼

    用心就能看见

    从陌生的脸 看到明天

    从熟悉经典 翻出新篇

    过眼的不只云烟

    有梦就有蓝天

    相信就能看见

    美梦是个气球

    牵在手上 向往蓝天

    不管高低不曾远离 我视线

    梦想是个诺言

    记在心上 写在面前

    因为相信 所以我看得见

    注:《梦想天空分外蓝》----陈奕迅

     

     

     

     

     

     

    阅读全文>>

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

2018-04-16

世界上最孤独的数

    世界上最孤独的数

    孤独,是一个多么神奇、多么神圣的字眼儿,仅仅两个字就道出了内心充溢的感情色彩,寂寞、空虚、冷,外加一万点忧伤。

    世界上最孤独的数,有人说是1,因为它孤身一人、形单影只;有人说是0,因为它虚无缥缈、没有任何存在感;有人说是π,因为无限不循环让它孤独到永远。

    然而并不是,它们这些独特还不足以达到之最。独占鳌头、占据之最的,非黄金分割比φ莫属。很多人认为它是最美的数,因为大千世界充满了0.618的身影。从数学上可以看出,φ是最“无理”的数,最难以接近的数,因而在这个意义上,它是最孤独的数。

    原以为世界上最孤独的城市是上海,上海最孤独的区是不那么发达的浦东,而世界上最孤独的人是我,直到遇到了0.618。

    这里的618不是京东打折促销,请原谅肤浅又无知的我,看到618如此浅薄的理解和认知。

           一个无理数有多种表现形式,无限不循环小数的形式是其中一种,每多写下一位数,就多一个精确因子去逼近它,这个过程是不收敛的。

    比如说π:

    这里的逼近,除了1还有其它整数。而最小的正整数,当然就是1了。黄金分割比率,是以1来逼近,最漫长、最孤独的近似。

     

    聪明的你肯定猜到了,这就是传说中的φ。1.61803398……,如果去掉前面的1就会得到另外一种形式0.618……。而这两个数正好互为倒数。

           φ是最孤独的数、最高冷的数、独一无二的数、不可捉摸的数。

    黄金分割具有严格的比例性、艺术性、和谐性,蕴藏着丰富的美学价值。这个数值的作用不仅仅体现在诸如绘画、雕塑、音乐建筑等艺术领域,而且在管理、工程设计也有着不可忽视的作用。

    人体的身高以肚脐眼为界,上下比例是φ,这样的均衡性让人看起来特别好看;长方形长宽比例接近φ时,会让人觉得特别美观;五角星是非常美丽的,因为所有线段之间的长度都是符合黄金分割比的;建筑物中某些线段的比科学地采用了黄金分割,舞台上的主持人并不是站在舞台的正中央,而是偏在台上一侧,以站在舞台长度的黄金分割点的位置最美观,声音传播的最好。就连植物界也有采用黄金分割的地方,如果从一棵嫩枝的顶端向下看,就会看到叶子是按照黄金分割的规律排列着的。在很多科学实验中,选取方案常用一种0.618法,即优选法,它可以使我们合理地安排较少的试验次数找到合适的科学实验条件。

    巴托克音乐中对黄金分割法则体现得淋漓尽致,令人惊叹不己,它集中反映在作品曲式结构与音程法则中。关于巴托克音乐作品中对曲式结构的逻辑性表现为高度的均衡感和适度感,高度的对称和统一特征。由此看来,作品内部比例和黄金标界的规律是有着密切的联系的,兰德卫称这种联系不下于维也纳古典乐派的方整型乐段在乐曲结构方面的重要性。巴托克的大量作品中,乐曲的高潮恰好在黄金分割点上,即乐曲总长乘以0.618得出的积为乐曲的高潮点。

    孤独的人,适合和孤独的φ共舞。

    看到如此之多的φ,我的内心又开始澎湃,于是我把神经网络凸优化的学习率引入了黄金分割比φ,NND的,历史总是惊人的相似,收敛速度和效果太好了。我把φ引入到神经网络的构建,特征提取太显著了。

    不仅在审美意义上φ是一个极具美观的数,在数学意义上φ是一个高冷的数。它最为有效,然而又最难靠近,最是无理,因此它是最独孤的数。相比之下,一个人之所以孤独常常不是因为无理,而是太过理性了。

          

    当我敲下这些忧伤又孤独的文字的时候,正值上海台风来袭之际,好像走在大街上就会被肆虐的大风刮上天似的,不,刮走的不是我们,是我们脑海里的思绪以及0.618。

    听着窗外呼啸的大风,开始自己的装B之旅,开始孤独地学习徒手开根号了。

    阅读全文>>

作者:Jason分类:【孤独浏览(780评论(0

2018-10-05

1025. 反转链表 (25)-浙大PAT乙级真题java实现

    1025. 反转链表 (25) 
    给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。 
    输入格式: 
    每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 10^5)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。 
    接下来有N行,每行格式为:Address Data Next 
    其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。 
    输出格式: 
    对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。 
    输入样例: 
    00100 6 4 
    00000 4 99999 
    00100 1 12309 
    68237 6 -1 
    33218 3 00000 
    99999 5 68237 
    12309 2 33218 
    输出样例: 
    00000 4 33218 
    33218 3 12309 
    12309 2 00100 
    00100 1 99999 
    99999 5 68237 
    68237 6 -1


    阅读全文>>

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

2018-01-18

http 8种方法

    http 8种方法

    1、OPTIONS
    返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
    2、HEAD
    向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
    3、GET
    向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
    4、POST
    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
    5、PUT
    向指定资源位置上传其最新内容
    6、DELETE
    请求服务器删除Request-URL所标识的资源
    7、TRACE
    回显服务器收到的请求,主要用于测试或诊断
    8、CONNECT
    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

     
    阅读全文>>

作者:Jason分类:【http浏览(663评论(0

2018-10-19