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

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

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

补充内容 (2015-6-3 14:03):
重复提交了一道题,删
回复

使用道具 举报

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

subsets后面有新的做法,此题做法,删
回复

使用道具 举报

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

LRU Cache:  https://leetcode.com/problems/lru-cache/
idea: 这题是比较难的了,通常只要onsite有些公司才会考。用到了双链表,hashmap等数据结构

  1. public class LRUCache {
  2.    
  3.     private HashMap<Integer, DoubleLinkedListNode> map = new HashMap<Integer, DoubleLinkedListNode>();
  4.     private DoubleLinkedListNode head;
  5.     private DoubleLinkedListNode end;
  6.     private int capacity;
  7.     private int len;
  8.    
  9.     public LRUCache(int capacity) {
  10.         this.capacity = capacity;
  11.         len = 0;
  12.     }
  13.    
  14.     public int get(int key) {
  15.         if(map.containsKey(key))
  16.         {
  17.             DoubleLinkedListNode lastest = map.get(key);
  18.             removeNode(lastest);
  19.             setHead(lastest);
  20.             return lastest.value;
  21.         }
  22.         else
  23.         {
  24.             return -1;
  25.         }
  26.     }
  27.    
  28.     public void removeNode(DoubleLinkedListNode node)
  29.     {
  30.         DoubleLinkedListNode cur = node;
  31.         DoubleLinkedListNode pre = cur.pre;
  32.         DoubleLinkedListNode post = cur.next;
  33.         
  34.         if(pre != null)
  35.         {
  36.             pre.next = post;
  37.         }
  38.         else
  39.         {
  40.             head = post;
  41.         }
  42.         
  43.         if(post != null)
  44.         {
  45.             post.pre = pre;
  46.         }
  47.         else
  48.         {
  49.             end = pre;
  50.         }
  51.     }
  52.    
  53.     public void setHead(DoubleLinkedListNode node)
  54.     {
  55.         node.next = head;
  56.         node.pre = null;
  57.         if(head != null)
  58.         {
  59.             head.pre = node;
  60.         }
  61.         
  62.         head = node;
  63.         if(end == null)
  64.         {
  65.             end = node;
  66.         }
  67.     }
  68.    
  69.     public void set(int key, int value) {
  70.         if(map.containsKey(key))
  71.         {
  72.             DoubleLinkedListNode oldNode = map.get(key);
  73.             oldNode.value = value;
  74.             removeNode(oldNode);
  75.             setHead(oldNode);
  76.         }
  77.         else
  78.         {
  79.             DoubleLinkedListNode newNode = new DoubleLinkedListNode(key, value);
  80.             if(len < capacity)
  81.             {
  82.                 setHead(newNode);
  83.                 map.put(key, newNode);
  84.                 len++;
  85.             }
  86.             else
  87.             {
  88.                 map.remove(end.key);
  89.                 end = end.pre;
  90.                 if(end != null)
  91.                 {
  92.                     end.next = null;
  93.                 }
  94.                 setHead(newNode);
  95.                 map.put(key, newNode);
  96.             }
  97.         }
  98.     }
  99. }

  100. class DoubleLinkedListNode
  101. {
  102.     public int key;
  103.     public int value;
  104.     public DoubleLinkedListNode pre;
  105.     public DoubleLinkedListNode next;
  106.    
  107.     public DoubleLinkedListNode(int key, int value)
  108.     {
  109.         this.value = value;
  110.         this.key = key;
  111.     }
  112. }
复制代码
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 16:18:01 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-17 16:53 编辑

Insert interval:  https://leetcode.com/problems/insert-interval/

idea: 此题要考虑三种情况,还是有点小难度,就是把数学例子变成代码

  1. public class Solution {
  2.     public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
  3.         List<Interval> result = new ArrayList<Interval>();
  4.         for(Interval interval : intervals)
  5.         {
  6.             if(interval.end < newInterval.start)
  7.             {
  8.                 result.add(interval);
  9.             }
  10.             else if(interval.start > newInterval.end)
  11.             {
  12.                 result.add(newInterval);
  13.                 newInterval = interval;
  14.             }else if(interval.end >= newInterval.start || interval.start <= newInterval.end)
  15.             {
  16.                 newInterval = new Interval(Math.min(interval.start,newInterval.start), Math.max(interval.end,newInterval.end));
  17.             }
  18.         }
  19.         result.add(newInterval);
  20.         return result;
  21.     }
  22. }
复制代码
回复

使用道具 举报

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

Permutations:  https://leetcode.com/problems/permutations/
idea: 代码不难看懂

  1. public class Solution {
  2.     public ArrayList<ArrayList<Integer>> permute(int[] nums) {
  3.         ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
  4.         
  5.         result.add(new ArrayList<Integer>());
  6.         
  7.         for( int i = 0; i < nums.length; i++)
  8.         {
  9.             ArrayList<ArrayList<Integer>> current = new ArrayList<ArrayList<Integer>>();
  10.             for(ArrayList<Integer> l : result)
  11.             {
  12.                 for(int j = 0; j < l.size()+1; j++)
  13.                 {
  14.                     l.add(j, nums);
  15.                     
  16.                     ArrayList<Integer> temp = new ArrayList<Integer>(l);
  17.                     current.add(temp);
  18.                     
  19.                     l.remove(j);
  20.                 }
  21.             }
  22.             result = new ArrayList<ArrayList<Integer>>(current);
  23.         }
  24.         return result;
  25.     }
  26. }
复制代码
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 17:41:54 | 只看该作者
全局:

向你看齐,谢谢
回复

使用道具 举报

🔗
annawuyi 2015-6-2 18:41:15 | 只看该作者
全局:
正能量。谢谢楼主分享
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 19:20:59 | 只看该作者
全局:
annawuyi 发表于 2015-6-2 18:41
正能量。谢谢楼主分享

谢谢支持。



回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 19:43:56 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-17 16:57 编辑

Merge two sorted lists:  https://leetcode.com/problems/merge-two-sorted-lists/
idea: 此题也比较容易了
  1. public class Solution {
  2.     public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  3.         ListNode p1 = l1;
  4.         ListNode p2 = l2;
  5.         
  6.         ListNode resultHead = new ListNode(0);
  7.         ListNode p = resultHead;
  8.         
  9.         while(p1 != null && p2 != null)
  10.         {
  11.             if(p1.val <= p2.val)
  12.             {
  13.                 p.next = p1;
  14.                 p1 = p1.next;
  15.             }
  16.             else
  17.             {
  18.                 p.next = p2;
  19.                 p2 = p2.next;
  20.             }
  21.             p = p.next;
  22.         }
  23.         if(p1 != null)
  24.         {
  25.             p.next = p1;
  26.         }
  27.         if(p2 != null)
  28.         {
  29.             p.next = p2;
  30.         }
  31.         return resultHead.next;
  32.     }
  33. }
复制代码
回复

使用道具 举报

🔗
 楼主| love1point 2015-6-2 19:59:50 | 只看该作者
全局:
本帖最后由 love1point 于 2015-6-17 16:58 编辑

Contains duplicate:  https://leetcode.com/problems/contains-duplicate/
idea:此题很容易,用到hashset

  1. public class Solution {
  2.     public boolean containsDuplicate(int[] nums) {
  3.         HashSet<Integer> set = new HashSet<Integer>();
  4.         
  5.         for(int i =0; i < nums.length; i++)
  6.         {
  7.             if(set.contains(nums))
  8.             {
  9.                 return true;
  10.             }
  11.             else
  12.             {
  13.                 set.add(nums);
  14.             }
  15.         }
  16.         return false;
  17.     }
  18. }
复制代码
回复

使用道具 举报

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

本版积分规则

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