• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Just for i0'

            Love i0

            網(wǎng)易暨Topcoder之有道難題,解題和一點(diǎn)體會(huì)

            周末在線做網(wǎng)易有道難題的挑戰(zhàn)賽,三個(gè)題目分值分別為350,500,1000分,第一道題理解并寫(xiě)出來(lái),但被別人cha掉;

            第二題理解題意,算法模模糊糊,不知道怎么寫(xiě)。最后時(shí)間來(lái)不及寫(xiě)完。 第三題沒(méi)來(lái)得及看。

             

            第一題被cha的概率很高,說(shuō)明大家對(duì)算法都存在同樣的問(wèn)題,看著差不多,其實(shí)有很多邏輯的混亂。至少我的第一題后來(lái)發(fā)現(xiàn)的確存在思路上的問(wèn)題。 教訓(xùn):寫(xiě)代碼之前算法一定要想清楚,邏輯完備很重要。

             

            看了AcRush的算法,不得不佩服。另一個(gè)感受就是:當(dāng)數(shù)據(jù)或者數(shù)據(jù)量發(fā)生質(zhì)變時(shí),特別注意一下兩個(gè)問(wèn)題:

            1、暴力還能否解決問(wèn)題 

            2、很多時(shí)候都有更好的算法來(lái)解決。

             

            下面是350分的題目和根據(jù)AcRush的代碼改寫(xiě)的Java版。

             

            網(wǎng)易有道難題TopCoder 在線挑戰(zhàn)賽 350 分題

            Problem Statement   

            如果一個(gè)數(shù)字十進(jìn)制表達(dá)時(shí),不存在連續(xù)兩位相同,則稱之為“不重復(fù)數(shù)”。例如,105123412121 都是“不重復(fù)數(shù)”,而111001225 不是。

            給定一個(gè)long 類型數(shù)字A ,返回大于A 的最小“不重復(fù)數(shù)”。

            Definition   

            Class:UnrepeatingNumbers

            Method:getNext

            Parameters: long

            Returns:long

            Method signature: long getNext(long A)

            (be sure your method is public)

            Constraints-

            A 取值范圍是[0, 10^17] ,注意是閉區(qū)間。

            Examples

            0)  

            54

            Returns: 56

            大于54 的最小數(shù)字是55 ,但55 不是“不重復(fù)數(shù)”。下一個(gè)數(shù)字是56 ,它滿足條件。

            1)   

            10

            Returns: 12

            2)  

            9

            Returns: 10

            3)   

            98

            Returns: 101

            99 100 都不是“不重復(fù)數(shù)”,但101 是。

            4)   

            21099

            Returns: 21201

            This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

             

             一種解法:

            import java.util.Scanner;

            public class UnrepeatingNumbers {
                
                
            public static void main(String[] args) {
                 
                    UnrepeatingNumbers un
            =new UnrepeatingNumbers();
                    Scanner cin
            =new Scanner(System.in);
                    
            while(true)
                    {
                     System.out.println(un.getNext(cin.nextLong()));
                    }
                }    
                
            public  long checkAndIterate (long n)
                {
                    StringBuffer s
            =new StringBuffer(String.valueOf(n));    
                    
            for(int i=0; i+1<s.length();i++)
                    {
                        
            if(s.charAt(i)==s.charAt(i+1))
                        {
                              
            long p10=1;
                              
            for(int j=i+2; j<s.length(); j++)                  
                              {    
                                  s.setCharAt(j,
            '0');    
                                  p10
            *=10;    
                              }                     
                              n
            =Long.parseLong(s.toString())+p10;    
                             
            return n;
                        }
                    }
                     
            return -1;
                }
                
            long getNext(long A)
                {
                    A
            ++;
                    
            long     temp=1;
                    
            while(temp>0)
                        { 
                        temp
            =checkAndIterate(A);
                        
            if(temp>0) A=temp;
                        }         
                    
            return A;
                }

            }


            希望對(duì)大家有幫助。算法的本質(zhì)在于效率。

            posted on 2009-06-24 17:21 for_I0 閱讀(1020) 評(píng)論(1)  編輯 收藏 引用 所屬分類: JavaACM、Topcoder 算法

            Feedback

            # re: 網(wǎng)易暨Topcoder之有道難題,解題和一點(diǎn)體會(huì) 2013-03-19 12:33 黃建

            估計(jì)與跟下40最接近的兩個(gè)整數(shù)是多少  回復(fù)  更多評(píng)論   



            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久天天躁夜夜躁狠狠| 国产午夜久久影院| 精品久久久久久中文字幕| 精品久久久久久无码免费| 久久久久亚洲AV成人片| 国内精品久久九九国产精品| 国产精品免费久久久久久久久| 久久久久久毛片免费看| 99久久精品免费看国产一区二区三区 | 亚洲AV无码成人网站久久精品大| 69久久精品无码一区二区| 深夜久久AAAAA级毛片免费看| 无码人妻久久久一区二区三区| 国产L精品国产亚洲区久久| 中文国产成人精品久久不卡| 久久免费香蕉视频| 久久免费线看线看| 久久99国产乱子伦精品免费| 亚洲国产成人乱码精品女人久久久不卡| 潮喷大喷水系列无码久久精品 | 伊人久久大香线焦AV综合影院 | 久久99久久成人免费播放| 久久棈精品久久久久久噜噜| 久久伊人五月丁香狠狠色| 四虎影视久久久免费| 久久国产综合精品五月天| 97超级碰碰碰碰久久久久| 久久精品国产亚洲AV无码娇色| 亚洲精品白浆高清久久久久久| 久久久久99这里有精品10| 四虎久久影院| 久久久久亚洲精品日久生情| 超级97碰碰碰碰久久久久最新| 久久婷婷五月综合成人D啪| 久久精品无码av| 色播久久人人爽人人爽人人片aV| 国产精品亚洲综合专区片高清久久久 | 97久久精品人妻人人搡人人玩| 久久夜色精品国产噜噜麻豆 | 99久久精品免费看国产一区二区三区 | 久久国产精品77777|