07 2018 档案
摘要:题目如下: 解题思路:凑数题+2,做完先序做后序。凑数博+2。 代码如下:
        阅读全文
            
摘要:题目如下: 解题思路:凑数题+1,话说我这个也是凑数博? 代码如下:
        阅读全文
            
摘要:题目如下: 解题思路:我的方法是从头开始遍历num,对于任意一个num[i],在[i+1~len(num)-1]区间内找出离num[i]最近并且小于num[i]的数num[j],如果j-i <= k的话表示num[j]可以被删除,同时记k -= 1;如果找不到num[j]或者j-i > k则表示不能
        阅读全文
            
摘要:题目如下: 解题思路:我的方法是找出所有的顶点,即满足height[i] > height[i+1] && height[i] > height[i-1]条件的index,如果height[i] == height[i+1],则需要往后顺延,找到i后面第一个不与自己相等的点,把所有的顶点存入列表pe
        阅读全文
            
摘要:题目如下: 解题思路:从头开始遍历string,用left和right分别表示左括号和右括号的数量,并用index记录起始下标。如果遇到left = right,表示这一段区间是合法的括号子串;如果right > left,表明这一段区间是不合法的,需要从index开始依次右移缩短区间,直到left
        阅读全文
            
摘要:题目如下: 解题思路:几千年前,一个古人曾经解过这个题目,他的名字叫做田忌,后人称他的解题思想叫做“田忌赛马”。言归正传,本题就是一个田忌赛马的问题,先将A与B进行排序,然后判断A[0]与B[0]的大小,如果A[0] > B[0],那么A[0]和B[0]就是一对,将A[0]和B[0]同时从数组删除;
        阅读全文
            
摘要:题目如下: 解题思路:假设p表示生成的其中一个符合条件的字符串的中间状态,例如p可以取值为'(('或者'()',那么下一步给p拼接左括号还是右括号取决于两个条件(这里假设左右括号都还没用完),如果p中左括号和右括号数量一样,那么下一步只能拼接左括号;如果左括号大于右括号,那么下一步拼接左括号或者右括
        阅读全文
            
摘要:题目如下: 解题思路:这题看起来和【leetcode】448. Find All Numbers Disappeared in an Array很相似,但是有几点不同:一是本题的输入存在负数,二是没有约定输入元素的最大值。那么,怎么可以把本题转换成448题的场景呢?首先,我们可以求出输入数组nums
        阅读全文
            
摘要:题目如下: 解题思路:本题对时间复杂度和空间复杂度都有要求,特别是空间,所以不能用字典之类的来记录已经出现的值。这里可以采用值-下标映射的方法,即把所有元素移动到其值减1的对应的下标的位置上,移动完成后,下标和值不匹配的元素即为缺失的number。例如输入[4,3,2,7,8,2,3,1], 代码如
        阅读全文
            
摘要:题目如下: 解题思路:首先将较短的输入前面补0,保证a和b长度一样,然后逐位相加再加上进位的值。如果和为3,当前位值为1,进位1;如果为2,当前位值为0,进位为1;否则不进位,当前位值即为和的值。 代码如下:
        阅读全文
            
摘要:题目如下: 解题思路:本题的关键是pattern和word之间必须是一对一的关系。因此需要建立pattern->word和word->pattern两种映射,这两种映射可用两个字典分别保存。 代码如下:
        阅读全文
            
摘要:题目如下: Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Eve
        阅读全文
            
摘要:题目如下: 解题思路:“你再牛逼有什么用,写不出二叉树反转就是不行。” 所以,我们一定要会写。方法是递归,递归,递归,递归交换节点的左右节点。 代码如下:
        阅读全文
            
摘要:题目如下: 解题思路:如下图,只需要找出数组中所有的拐点(前后值相等也认为是拐点)。最低点分配的糖果是1个,最高点分配的糖果是max(到左边最低点的距离,到右边最低点的距离),因为次高点与最低点之间每个点分配的糖果构成公差为1的等差数列,因此很容易就能求出相邻的最高点和最低点组成的线段中所有点分配的
        阅读全文
            
摘要:题目如下: 解题思路:我的解法是使用两个栈,一个保存运算符,一个保存括号和数字。因为只有加减操作,所以每个数字入栈前,先判断栈顶是否是'(',如果不是,则该数字和栈顶的数字进行运算后,把原来栈顶的数字删掉,把计算的结果入栈;否则,直接入栈。如果遇到')',计算栈中所有的数字,直到遇到'('。考虑到几
        阅读全文
            
摘要:题目如下: 解题思路:这题和【leetcode】583. Delete Operation for Two Strings也是相似的,只不过多了一种替换的操作。具体的解析可以参考《编程之美》中的《寻找相似字符串》章节,有详细的解释。不过书中给的解法是递归,在本题会TEL,所以需要改成动态规划。如果如
        阅读全文
            
摘要:题目如下: 解题思路:本题和【leetcode】583. Delete Operation for Two Strings 类似,区别在于word1[i] != word2[j]的时候,是删除word1[i]还是word2[j]取决于min(dp[i-1][j]+ord(word1[i-1]),dp
        阅读全文
            
摘要:题目如下: 解题思路:一般这种求最大/最小的题目大多数都是用动态规划。记dp[i][j] = n 表示最少经过n次删除操作后,使得word1[0~i]与word2[0~j]相等。那么可以等到递推关系式,如果word1[i] == word2[j],那么dp[i][j] = dp[i-1][j-1];
        阅读全文
            
摘要:题目如下: 解题思路:本题需要知道一个数字规律,即pow(2,n) > sum(pow(2,0)+pow(2,1)+...+pow(2,n-1))。所以,为了获得最大值,要保证所有行的最高位是1,即需要优先进行行变换,把最高位变成1。接下来就是列变换,把0多于1的列做变换变成1多于0的列即可。 代码
        阅读全文
            
摘要:题目如下: 解题思路:我的方案是先把S拆分成整数对,例如S='1230',先拆分成(1,230),(12,30),(123,0),然后再对前面整数对进行加小数点处理。比如(12,30)中的12可以加上小数点可以变成(12)和(1.2),(30)可以变成(30)和(3.0)。接下来对加上小数点后的结果
        阅读全文
            
摘要:题目如下: 解题思路:没啥好说的,用动态规划,很容易得到递推表达式: dp[m] [n]= dp[m-1][n] + dp[m][n-1]。 代码如下:
        阅读全文
            
摘要:题目如下: 解题思路:我的做法是建立一个字典dic,key为stone,value是一个set,里面存的是从前面的所有stone跳跃到当前stone的unit集合。例如stones=[0,1,2,3]。stone3可以从stone1跳跃两步得到或者从stone2跳跃1步得到,所有dic[3] = (
        阅读全文
            
摘要:题目如下: 解题思路:也没啥好说的,回溯法。 代码如下:
        阅读全文
            
 
                    
                     
                    
                 
                    
                 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号