楼主: love1point
跳转到指定楼层
上一主题 下一主题
收起左侧

Leetcode 刷题记录!!!不信自己今年找不到工作!!!

 
🔗
 楼主| love1point 2015-6-1 17:56:07 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-17 16:40 编辑

Edit distance: https://leetcode.com/problems/edit-distance/

idea: 动态规划。觉得这题比较难,不看别人的答案的话

  1. public class Solution {
  2.     public int minDistance(String word1, String word2) {
  3.         int len1 = word1.length();
  4.         int len2 = word2.length();
  5.         
  6.         int[][] dp = new int[len1+1][len2+1];
  7.         
  8.         for(int i = 0; i <= len1; i++)
  9.         {
  10.             dp[0] = i;
  11.         }
  12.         
  13.         for(int j = 0; j <= len2; j++)
  14.         {
  15.             dp[0][j] = j;
  16.         }
  17.         
  18.         for(int i = 0; i < len1; i++)
  19.         {
  20.             char c1 = word1.charAt(i);
  21.             for(int j = 0; j < len2; j++)
  22.             {
  23.                 char c2 = word2.charAt(j);
  24.                
  25.                 if(c1 == c2)
  26.                 {
  27.                     dp[i+1][j+1] = dp[j];
  28.                 }
  29.                 else
  30.                 {
  31.                     int replace = dp[j] + 1;
  32.                     int insert = dp[j+1] + 1;
  33.                     int delete = dp[i+1][j] + 1;
  34.                     
  35.                     int min = replace > insert ? insert : replace;
  36.                     min = delete > min ? min: delete;
  37.                     dp[i+1][j+1] = min;
  38.                 }
  39.             }
  40.         }
  41.         return dp[len1][len2];
  42.     }
  43. }
复制代码
回复

使用道具 举报

🔗
wynnforce 2015-6-1 17:56:49 | 只看该作者
全局:
lz能不能发github上或者blog上...论坛的code snippet工具有点渣...
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-1 18:33:53 | 只看该作者
全局:
enirinth 发表于 2015-6-1 17:56
lz能不能发github上或者blog上...论坛的code snippet工具有点渣...

嗯,但是直接放在一亩三分地更多人看得的啊。放github 链接可能没那么多人可以看到
谢谢你的建议

你可以把代码直接复制到leetcode去运行

有问题欢迎讨论哈
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-1 22:10:04 | 只看该作者
全局:
本帖最后由 love1point 于 2015-7-3 09:22 编辑

Remove element: https://leetcode.com/problems/remove-element/

idea: 这题题题意很好理解。当遇到数组里的元素和要被删除的数不相同时,我们进行赋值,且计数加一。遇到就是要被删除的数,不处理。7.2.2015, update: 注意返回的是 result, 而不是nums.length
  1. public class Solution {
  2.     public int removeElement(int[] nums, int val) {
  3.         int result = 0;
  4.         for(int i = 0; i < nums.length; i++)
  5.         {
  6.             if(nums[i] != val)
  7.             {
  8.                 nums[result] = nums[i];
  9.                 result++;
  10.             }
  11.         }
  12.         return result;
  13.     }
  14. }
复制代码
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 10:23:02 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-16 09:59 编辑

Container with most water:  https://leetcode.com/problems/container-with-most-water/

idea: 该题题目读起来需要花点时间,画画图,其实题目实质模型比较简单,用左右指针相向指,面积就是长乘高。

  1. public class Solution {
  2.     public int maxArea(int[] height) {
  3.         if(height == null || height.length < 2)
  4.         {
  5.             return 0;
  6.         }
  7.         
  8.         int result = 0;
  9.         int left = 0;
  10.         int right = height.length -1 ;
  11.         
  12.         while(left < right)
  13.         {
  14.             result = Math.max(result, (right-left)*Math.min(height[left],height[right]));
  15.             
  16.             if(height[left] < height[right])
  17.             {
  18.                 left++;
  19.             }
  20.             else
  21.             {
  22.                 right--;
  23.             }
  24.         }
  25.         return result;
  26.     }
  27. }
复制代码
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 10:54:08 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-16 10:00 编辑

Same tree:  https://leetcode.com/problems/same-tree/

idea: 递归方法解决。记住,凡是用到递归,一定要有出口。有四种情况,比如, 1.  [][].         2.  [][val].            3. [val][].             4. [val][val].
所以第一个if处理 第一种情况,第二个if处理 2,3. 第三个if处理第4种。

  1. public class Solution {
  2.     public boolean isSameTree(TreeNode p, TreeNode q) {
  3.         if(p == null && q == null)
  4.         {
  5.             return true;
  6.         }
  7.         
  8.         if(p == null || q == null)
  9.         {
  10.             return false;   
  11.         }
  12.         
  13.         if(p.val != q.val)
  14.         {
  15.             return false;
  16.         }
  17.         return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
  18.         
  19.     }
  20. }
复制代码
回复

使用道具 举报

🔗
laoxie09 2015-6-2 11:14:19 | 只看该作者
全局:
strstr楼主试着用KMP解解看呢?
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 11:31:12 | 只看该作者
全局:
laoxie09 发表于 2015-6-2 11:14
strstr楼主试着用KMP解解看呢?

没必要吧。面试官没几个会的
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 11:37:49 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-17 16:44 编辑

Symmetric tree:  https://leetcode.com/problems/symmetric-tree/

idea: 这题比较简单,递归做法

  1. public class Solution {
  2.     public boolean isSymmetric(TreeNode root) {
  3.         if(root == null)
  4.         {
  5.             return true;
  6.         }
  7.         
  8.         return helper(root.left, root.right);
  9.         
  10.     }
  11.     public boolean helper(TreeNode p, TreeNode q)
  12.     {
  13.         if(p == null && q == null)
  14.         {
  15.             return true;
  16.         }
  17.         
  18.         if(p == null || q == null)
  19.         {
  20.             return false;
  21.         }
  22.         
  23.         if(p.val != q.val)
  24.         {
  25.             return false;
  26.         }
  27.         
  28.         return helper(p.left, q.right) && helper(p.right, q.left);
  29.     }
  30. }
复制代码
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 13:45:34 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-17 16:47 编辑

Pascal's triangle ii:  https://leetcode.com/problems/pascals-triangle-ii/

idea: 这道题比 pascals-triangle-i 简单了,所以说ii不一定比i难
  1. public class Solution {
  2.     public ArrayList<Integer> getRow(int rowIndex) {
  3.         ArrayList<Integer> result = new ArrayList<Integer>();
  4.         
  5.         result.add(1);
  6.         
  7.         for(int i = 0; i < rowIndex; i++)
  8.         {
  9.             for(int j = result.size()-2; j >= 0; j--)
  10.             {
  11.                 result.set(j+1, result.get(j)+result.get(j+1));
  12.             }
  13.            
  14.             result.add(1);
  15.         }
  16.         return result;
  17.     }
  18. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表