leetcode解题笔记
本专栏的文章都是我在做leetcode算法和数据库题目时,整理的解题思路和代码,供大家参考。
酱油何在
渣硕一枚
展开
-
【leetcode每日一题】NO141.Linked List Cycle
题目:Given a linked list, determine if it has a cycle in it. 解析:可以声明两个指针,一个快指针,一个慢指针,如果链表中存在环,则两个指针肯定会相遇。 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; *原创 2015-06-04 19:54:49 · 745 阅读 · 0 评论 -
【leetcode每日一题】NO19.Remove Nth Node From End of List
题目:Given a linked list, remove the nth node from the end of list and return its head.即给定一个链表,删除倒数第n个节点。解析:可以声明两个指针,让指针A先指向第n个节点,指针B指向第1个节点,两个指针同时遍历链表,当指针A指向最后一个节点时,指针B真好指向倒数第n个节点。注意:要判断n和链表长度的关系。代码:/*原创 2015-08-07 20:53:55 · 747 阅读 · 0 评论 -
【leetcode每日一题】NO83.Remove Duplicates from Sorted List
题目:给定一个有序链表,删除重复值的节点,使得每个值只出现一次。解析:链表是有序的,我们可以声明两个指针,一个指向当前节点,一个指向下一个节点,判断这两个节点指向的值是否相等,如果相等,则删掉节点。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNo原创 2015-08-11 22:01:05 · 685 阅读 · 0 评论 -
【leetcode每日一题】NO21.Merge Two Sorted Lists
题目:Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.解析:与有序数组合并类似,先声明一个指针,指向值小的头结点,再遍历两个指针,依次比较大小。代码:/*原创 2015-08-12 09:15:56 · 637 阅读 · 0 评论 -
【leetcode每日一题】NO206.Reverse Linked List
题目:Reverse a singly linked list.即单链表反序。解析:链表反序是很常见的题目,不过多解释了,直接上代码。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : va原创 2015-08-13 10:13:01 · 784 阅读 · 0 评论 -
【leetcode每日一题】NO142.Linked List Cycle II
题目:Given a linked list, return the node where the cycle begins. If there is no cycle, return null解析:根据141题的思路,声明一个慢指针和一个快指针,若存在环,则肯定相遇。借用一篇博客里的图,讲解一下如何求环开始节点。如下图所示:快慢指针相遇时,快指针走的距离为:f=x+y+z+y;慢指针走的原创 2015-08-14 09:02:41 · 757 阅读 · 0 评论 -
【leetcode每日一题】NO160.Intersection of Two Linked Lists
题目:Write a program to find the node at which the intersection of two singly linked lists begins.For example, the following two linked lists:A: a1 → a2↘c1 → c2 → c3↗ B: b1 → b2 → b3begi原创 2015-08-15 09:08:46 · 569 阅读 · 0 评论 -
【leetcode每日一题】NO109.Convert Sorted List to Binary Search Tree
题目:Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.给定一个升序排列的单链表,把它转化为一个搜索二叉树。解析:搜索二叉树的左子节点要小于父节点,右子节点要大于父节点。单链表是升序的,先找出链表的中间节点,作为二叉树的根节点。原创 2015-08-15 22:34:01 · 595 阅读 · 0 评论 -
【leetcode每日一题】NO86.Partition List
题目:Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each原创 2015-08-16 09:33:46 · 608 阅读 · 0 评论 -
【leetcode每日一题】NO92.Reverse Linked List II
题目:Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.Note:Given m, n satisfy原创 2015-08-17 09:31:29 · 644 阅读 · 0 评论 -
【leetcode每日一题】NO257.Binary Tree Paths
题目:Given a binary tree, return all root-to-leaf paths.For example, given the following binary tree:1/ \ 2 3 \ 5All root-to-leaf paths are:["1->2->5", "1->3"]原创 2015-08-25 21:38:29 · 723 阅读 · 0 评论 -
【leetcode每日一题】149.Max Points on a line
题目:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.解析:题目要求是给定n个2维的点,求出总共有多少个点在同一条直线上。由数学知识可知,给定三个点a,b,c,如果三个点在一条直线上,则a和b的斜率与c和d的斜率是相同的。用哈希表来做,针对每个点原创 2015-08-28 15:11:14 · 1098 阅读 · 0 评论 -
【leetcode每日一题】24.Swap Nodes in Pairs
题目:Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant s原创 2015-08-31 22:10:21 · 722 阅读 · 0 评论 -
【leetcode每日一题】203.Remove Linked List Elements
题目:Remove all elements from a linked list of integers that have value val.ExampleGiven: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6Return: 1 --> 2 --> 3 --> 4 --> 5解析:声明一个节点result原创 2015-08-31 22:19:18 · 748 阅读 · 0 评论 -
【leetcode每日一题】25.Reverse Nodes in k-Group
题目:Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.If the number of nodes is not a multiple of k then left-out nodes in the end should rema原创 2015-09-01 09:35:40 · 1135 阅读 · 2 评论 -
【leetcode每日一题】82.Remove Duplicates from Sorted List II
题目:Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.For example,Given 1->2->3->3->4->4->5, return 1->2->5.Gi原创 2015-09-01 10:49:23 · 1503 阅读 · 1 评论 -
【leetcode每日一题】148.sort List
题目:Sort a linked list in O(n log n) time using constant space complexity.解析:题目要求是对链表进行排序,但是复杂度不能超过O(nlgn)。符合题意的常见排序方法有快排、归并排序和堆排序。以下是用归并排序解决此题的步骤。1)将链表从中间部分分为两个链表。具体做法是:声明两个指针,一个快指针和一个慢指针,当快指针指向原创 2015-09-01 11:30:17 · 973 阅读 · 1 评论 -
【leetcode每日一题】234.Palindrome Linked List
题目:Given a singly linked list, determine if it is a palindrome.Follow up:Could you do it in O(n) time and O(1) space?解析:方法一:如果不考虑空间复杂度,则可以直接用vector来做。将所有节点压入vector,然后对比vector前半部分和后半部原创 2015-09-01 12:32:14 · 648 阅读 · 0 评论 -
【leetcode每日一题】61.Rotate List
题目:Given a list, rotate the list to the right by k places, where k is non-negative.For example:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL.解析:只要找到从右数第k+1个点,本题就可以解决了。原创 2015-09-01 12:52:42 · 646 阅读 · 0 评论 -
【leetcode每日一题】Reorder List
题目:Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given {1,2,3,4}, reorder原创 2015-09-01 14:37:50 · 1091 阅读 · 0 评论 -
【leetcode每日一题】2.Add Two Numbers
题目:You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as原创 2015-09-01 14:48:10 · 701 阅读 · 0 评论 -
【leetcode每日一题】237.Delete Node in a Linked List
题目:Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node wit原创 2015-09-01 14:55:52 · 757 阅读 · 0 评论 -
【leetcode每日一题】138.Copy List with Random Pointer
题目:A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.Return a deep copy of the list.解析:如果是正常的链表,则直接新建结点,然后把原创 2015-09-01 16:35:41 · 1002 阅读 · 0 评论 -
【leetcode每日一题】23.Merge k Sorted Lists
题目:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.解析:可以先归并两个链表,然后依次归并所有链表。代码如下:/** * Definition for singly-linked list. * struct ListNode {原创 2015-09-01 20:55:07 · 754 阅读 · 0 评论 -
【leetcode每日一题】104.Maximum Depth of Binary Tree
题目:Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.即是求一课二叉树的深度。解析:方法一:原创 2015-09-09 20:02:16 · 848 阅读 · 0 评论 -
【leetcode每日一题】100.same treet
题目:Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical and the nodes have the same value.解析:原创 2015-09-10 20:35:17 · 647 阅读 · 0 评论 -
【leetcode每日一题】235.Lowest Common Ancestor of a Binary Search Tree
题目:Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.解析:二分搜索树的性质是根节点的值要大于左孩子节点的值,小于右子孩子节点的值。根据这一性质,我们只需判断给定两个节点的值与根节点的大小关系即可。如果两个值都小于根节点的值,则再去左子树继原创 2015-09-14 20:09:43 · 648 阅读 · 0 评论 -
【leetcode Database】175.Combine Two Tables
题目:Table: Person+-------------+---------+| Column Name | Type |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+-----原创 2016-07-26 17:53:52 · 3654 阅读 · 0 评论 -
【leetcode Database】182. Duplicate Emails
题目:Write a SQL query to find all duplicate emails in a table named Person.+----+---------+| Id | Email |+----+---------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |+----+---------+原创 2016-07-27 10:52:28 · 3654 阅读 · 0 评论 -
【leetcode Database】181. Employees Earning More Than Their Managers
题目:The Employee table holds all employees including their managers. Every employee has an Id, and there is also a column for the manager Id.+----+-------+--------+-----------+| Id | Name |原创 2016-07-27 11:30:18 · 4222 阅读 · 0 评论 -
【leetcode Database】183. Customers Who Never Order
题目:Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL query to find all customers who never order anything.Table: Customers.+----+-------+原创 2016-07-27 14:04:22 · 3485 阅读 · 0 评论 -
【leetcode Database】197. Rising Temperature
题目:Given a Weather table, write a SQL query to find all dates' Ids with higher temperature compared to its previous (yesterday's) dates.+---------+------------+------------------+| Id(INT)原创 2016-07-27 14:47:50 · 3685 阅读 · 0 评论 -
【leetcode Database】176. Second Highest Salary
题目:Write a SQL query to get the second highest salary from the Employee table.+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+原创 2016-07-27 15:26:48 · 4206 阅读 · 0 评论 -
【leetcode Database】184. Department Highest Salary
题目:The Employee table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id.+----+-------+--------+--------------+| Id | Name | Salary |原创 2016-08-03 18:47:07 · 4211 阅读 · 0 评论 -
【leetcode Database】196. Delete Duplicate Emails
题目:Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique emails based on its smallest Id.+----+------------------+| Id | Email |+-原创 2016-08-04 13:36:50 · 3409 阅读 · 0 评论 -
【leetcode Database】177. Nth Highest Salary
题目:Write a SQL query to get the nth highest salary from the Employee table.+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+F原创 2016-08-04 18:17:17 · 4462 阅读 · 0 评论 -
【leetcode Database】185. Department Top Three Salaries
题目:The Employee table holds all employees. Every employee has an Id, and there is also a column for the department Id.+----+-------+--------+--------------+| Id | Name | Salary | Departmen原创 2016-08-08 14:25:14 · 3711 阅读 · 0 评论 -
【leetcode Database】180. Consecutive Numbers
题目:Write a SQL query to find all numbers that appear at least three times consecutively.+----+-----+| Id | Num |+----+-----+| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 || 5 | 1 |原创 2016-08-08 15:51:12 · 3804 阅读 · 0 评论 -
【leetcode Database】178. Rank Scores
题目:Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ranking. Note that after a tie, the next ranking number should be the next consecutive intege原创 2016-08-08 17:06:10 · 4297 阅读 · 0 评论 -
【leetcode Database】262. Trips and Users
题目:The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are both foreign keys to the Users_Id at theUsers table. Status is an ENUM type of (‘completed原创 2016-08-09 11:22:00 · 4326 阅读 · 0 评论