Leetcode
lovenkcs
这个作者很懒,什么都没留下…
展开
-
Number of 1 Bits
Number of 1 Bits题意:计算一个无符号整形数字的二进制格式下1的个数 思路:在while循环中首先用这个数求余2,如果余数为1,则个数加1,然后 将该数字除以2,判断该数字是否为0,是结束循环,否则继续class Solution: # @param n, an integer # @return an integer def hammingWeig原创 2015-03-16 22:10:41 · 482 阅读 · 0 评论 -
349. Intersection of Two Arrays
题意:找出两个数组中交叉的部分 思路:先把第一个数组中唯一的元素提取出来,然后在第二个数组中找到重复出现的元素,并提取出来放到结果数组中public class Solution { public int[] intersection(int[] nums1, int[] nums2) { int[] res = new int[nums1.length];原创 2016-06-14 22:25:44 · 333 阅读 · 0 评论 -
Submission Details
题意:给定一个二位数组,数组中记录一组信封的长宽,现在按照小信封外套大信封的方法,求最多能套几层思路:把二位数组转化为list,然后按照宽排序,之后用动态规划,dp[i]记录第i个信封能存的最大的信封数,其中dp[i]=dp[j]+1其中dp[j]是在从比dp[i]的宽度小的dp中找到的最大值class Nodes { int w; int h; public Nodes(i原创 2016-06-14 21:16:53 · 440 阅读 · 0 评论 -
Longest Increasing Path in a Matrix
题意:找出2维数组中连续升序最长的值 思路:采用DFS,遍历每一个数字,找出所有的可能并取得最大值,并用另外一个数组记录当前访问过节点的可能最大值,其中可以减枝,如果当前点比他的邻点小而且他的相邻点的已经记录的值不大于当前记录的值+1,则继续下一个邻点,用一个二维数组记录每一个节点的当前最大可能值public class Solution { int max = 1; public原创 2016-04-12 23:03:16 · 304 阅读 · 0 评论 -
2. Add Two Numbers
题意:两个整数用list表示,求他们的和,高位在list尾部思路: 遍历两个list,每次把两个数,及进位相加,当前数为和求余10,进位为和除以10,知道有一个list结束,并查看两个list,把没有遍历完的list中的元素放到结果list的后边,其中要注意进位时间:O(n) 空间:O(n+m)public class Solution { public ListNode addTwoN原创 2015-11-20 09:31:27 · 291 阅读 · 0 评论 -
1. Two Sum
题意:给一个无序的数组找出里边两个数的和为指定数的位置思路: 从头至尾遍历数组,每一次判断hashmap中是否有数值等于位指定数-当前数的项,并把当前项的数值和对应的index放到hashmap中时间:O(n) 空间:O(n)public class Solution { public int[] twoSum(int[] nums, int target) { int[原创 2015-11-20 09:16:53 · 259 阅读 · 0 评论 -
Intersection of Two Linked Lists
题意:给定两个链表,找到两个链表相交的地方 解法:遍历两个链表的长度,然后找到长链表中和短链表中长度相同的节点,开始同时遍历直到找到共同节点 复杂度:时间O(m+n),空间O(1)public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if(原创 2015-03-24 22:05:44 · 440 阅读 · 0 评论 -
Combine Two Tables
题意:给定person和address表,且personid是address表的外键,是person表的主键,找出每个person的firstname,lastname,city和state,如果没有city和state也要返回 解法:把persoin和address左连接起来即可查询select Person.FirstName, Person.LastName, Address.City, A原创 2015-03-24 01:22:12 · 396 阅读 · 0 评论 -
Second Highest Salary
题意:找出表中第二高的工资 解法:倒着排序无重复的工资,并选出第二个数据,这里主要用limit 和 distinct。limit (偏移量(从0开始)),(取出多少行)select (select distinct(Salary) from Employee order by Salary desc limit 1,1) as SecondHighestSalary原创 2015-03-24 02:57:46 · 379 阅读 · 0 评论 -
Customers Who Never Order
题意:找出customer从没有在order表中出现过的顾客的名字 解法:用内部链接选出所有在order表中出现过的顾客的名字,并作为新表,然后取出customer中没在该表中出现过的名字select Customers.name from Customers where id not in(select Customers.id from Customers inner join Orders原创 2015-03-24 01:59:13 · 415 阅读 · 0 评论 -
Majority Element
题意:找出数组中出现次数大于等于一半的数字 解法:用两个变量,cur_num当前出现次数最多的数字,times记录cur_num出现的次数,当num[i]与cur_num相同则times+1,否则times-1,如果times<0,怎更改cur_num和times 复杂度:时间O(n) 空间O(1)public class Solution { publ原创 2015-03-28 03:29:02 · 370 阅读 · 0 评论 -
350. Intersection of Two Arrays II
题意:两个数组,找出所有交叉的元素 思路:思路相近,与I不同的是用hashmap纪录在数组1中元素出现的个数,然后数组2中没处现一次就在hashmap中减去1个public class Solution { public int[] intersect(int[] nums1, int[] nums2) { int[] res = new int[nums2.length]原创 2016-06-14 23:43:47 · 360 阅读 · 0 评论