LeetCode
Rain722
这个作者很懒,什么都没留下…
展开
-
[LeetCode] 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 space. Y原创 2017-12-09 19:45:55 · 393 阅读 · 0 评论 -
[剑指offer]二叉搜索树转链表
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: TreeNode* Convert(TreeNode*原创 2018-01-20 14:39:31 · 605 阅读 · 0 评论 -
[剑指offer]删除链表中重复的结点
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/题解:class Solution {public: ListNode* deleteDuplication(ListNode* pHead原创 2018-01-20 16:07:02 · 379 阅读 · 0 评论 -
[LeetCode]Merge Sorted Array(合并两个有序的数组)
思路:从后往前比,然后处理剩下的元素。因为不允许使用多余的数组空间,就不好对两个数组从前往后进行比较(插入位置比较麻烦)class Solution {public: void merge(vector& nums1, int m, vector& nums2, int n) { while(m>0&&n>0) { if(nums1[m-1]>nums2[n原创 2018-01-20 19:06:42 · 425 阅读 · 0 评论 -
[LeetCode21]Merge Two Sorted Lists(合并两个有序链表)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */思路:从头开始,分别比较两个链表的每个元素。较小元素放前面,然后一次往后走cla原创 2018-01-20 19:08:33 · 350 阅读 · 0 评论 -
[LeetCode23]Merge k Sorted Lists(合并k个有序链表)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */思路:借鉴归并排序的思想,针对这个lists进行排序假设总共有k个list,每个原创 2018-01-20 19:09:31 · 388 阅读 · 0 评论 -
[LeetCode147]Insertion Sort List(链表插入排序)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* in原创 2018-01-20 19:10:30 · 355 阅读 · 0 评论 -
[LeetCode148]Sort List(对链表排序)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */思路:归并排序,因为是链表,所有核心是如何找到链表的中间位置,解法是快慢指针的技巧原创 2018-01-20 20:11:45 · 414 阅读 · 0 评论 -
[LeetCode41]找到一段连续正整数中丢失的数
class Solution {public: int firstMissingPositive(vector& nums) { int len=num.size(); if(len==0) return 1; for(int i=0; i<len; i++) { if(nums[i]>0&&nums[i]<=len&&nums[nums[i]-1]!=原创 2018-01-20 20:29:17 · 400 阅读 · 0 评论 -
[剑指offer]链表中环的入口结点
假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程)当快慢指针相遇的时候:此时慢指针走的路程为Sslow = x + m * c + a快指针走的路程为Sfast = x + n * c + a2 Sslow = Sfast2 * ( x + m*c + a ) = (x + n *c + a)从原创 2018-01-20 14:38:18 · 462 阅读 · 0 评论 -
[LeetCode]Flatten Binary Tree to Linked List(二叉树转链表)
Given a binary tree, flatten it to a linked list in-place.For example,Given 1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like: 1 \ 2原创 2018-01-18 22:16:46 · 465 阅读 · 0 评论 -
[剑指Offer]最小的K个数
/*思路:o(n)的算法,只有当可以更改输入的数组时候才可用从数组中次数超过一半的数字得到启发。就是用快速排序的思想,找到第K大的数,那么左边都是比它小的数了*/class Solution {public: vector GetLeastNumbers_Solution(vector input, int k) { int start=0, end=input.size(原创 2018-01-21 21:04:53 · 557 阅读 · 0 评论 -
[LintCode] Swap Two Nodes in Linked List 交换链表中的两个结点
Given a linked list and two values v1 and v2. Swap the two nodes in the linked list with values v1 and v2. It's guaranteed there is no duplicate values in the linked list. If v1 or v2 does not exist i原创 2017-12-09 21:42:35 · 322 阅读 · 0 评论 -
按之字形顺序打印二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。题目链接:点击PS:也可以用两个栈来做这题import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNo原创 2017-12-18 17:56:10 · 251 阅读 · 0 评论 -
反转链表
输入一个链表,反转链表后,输出链表的所有元素。C++:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution{public: ListNode* ReverseList(ListNode* p原创 2017-12-18 19:21:15 · 233 阅读 · 0 评论 -
链表中倒数第k个结点
思路一:两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。/*public class ListNode{ int val; ListNode next = null; ListNode(int val) {原创 2017-12-18 20:05:59 · 269 阅读 · 0 评论 -
LeetCode 160. Intersection of Two Linked Lists(两个链表的第一个公共结点)
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public原创 2018-01-02 21:03:23 · 566 阅读 · 0 评论 -
[LeetCode] Reverse Nodes in k-Group每k个一组翻转链表
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 remain as it is原创 2017-12-19 16:50:27 · 472 阅读 · 0 评论 -
[剑指Offer]二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法一:直接一跳一跳的查找即可,我没想到public class Solution { public boolean Find(int target, int [][] array) { int len=ar原创 2018-01-21 21:03:25 · 419 阅读 · 0 评论 -
[剑指Offer]数组中出现次数超过一半的数字
/*思路:数字中有一个数组出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现次数的和还要多。因此我们可以考虑在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1如果下一个数字和之前保存的数字不用,则次数减1.如果次数为0,我们需要保存下一个数字,并把次数设为1.由于我们要找的原创 2018-01-21 21:04:16 · 446 阅读 · 0 评论 -
[LeetCode386]Lexicographical Numbers(n以内的数字按字典序输出)
Given an integer n, return 1 - n in lexicographical order.For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].Please optimize your algorithm to use less time and space. The input si原创 2018-01-20 20:59:46 · 707 阅读 · 1 评论