数据结构与算法的积累
不断完善的少年
干什么都需要不断完善。
馒头比外卖更努力。
展开
-
链表-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.思考:最开始以为就是两个链表简答的合并就ok,毕竟自己很菜,后来想想有些细节,合并后的链原创 2016-04-06 08:19:16 · 354 阅读 · 0 评论 -
位运算-Single Number III(只有两个不同的数字出现了一次,其余出现了两次,找出这两个数)
题目描述:Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.For example原创 2016-05-29 22:48:15 · 524 阅读 · 0 评论 -
字符串-全排序
问题描述:给定一个字符串数组,打印这个数组所有的排序组合。思考:利用递归,把每个字符串放在开头n,然后分别得到相应的组合个数m,最后sum = s*m。代码(java):public class StringFullArray { static int total; public static void swap(String[] str, int left, int r原创 2016-04-23 16:55:56 · 408 阅读 · 0 评论 -
链表-Remove Nth Node From End of List(删除指定的节点)
问题描述:Given a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from t原创 2016-05-31 19:49:35 · 377 阅读 · 0 评论 -
位运算-Single Number (求一个给定数组的出现次数为单数的那个数)
题目描述:Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it withou原创 2016-05-08 21:33:06 · 416 阅读 · 0 评论 -
栈-Min Stack(实现一个栈,用常数级时间找出栈中的最小值)
问题描述:Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) -- Push element x onto stack.pop() -- Removes the element on top of the stack.to原创 2016-04-08 16:06:03 · 1853 阅读 · 0 评论 -
数组-Kth Largest Element in an Array(找出第K大的数)
题目描述;Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.For example,Given [3,2,1,5,6,4] and k = 2,原创 2016-06-04 14:49:35 · 417 阅读 · 0 评论 -
位运算-Number of 1 Bits(求一个十进制数字,它的二进制表示中有多少个 1(bit))
问题描述:Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11' has binary representa原创 2016-04-08 17:13:55 · 1154 阅读 · 0 评论 -
字符串-Reverse Words in a String(翻转字符串)
问题描述:Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".Update (2015-02-12):For C programmers: Try to solve it原创 2016-06-20 11:00:47 · 439 阅读 · 0 评论 -
位运算-Single Number II(给定一个数组,除了一个数字出现一次,其他都出现三次,求出现一次的数)
题目描述:Given an array of integers, every element appears three times except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it原创 2016-06-21 15:54:22 · 932 阅读 · 0 评论 -
理解红黑树
我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然后按照指定的键来搜索并获取这些信息。键和值的具体意义取决于不同的应用。符号表中可能会保存很多键和很多信息,因此实现一张高效的符号表也是一项很有挑战性的任务。我们会用三种经典的数据类型来实现高效的符号表:二叉查找数、红黑树、散列表。二分查找我们使用有序数组存储转载 2016-05-16 07:52:26 · 663 阅读 · 0 评论 -
排序-归并排序
题目描述:把一个乱序的数组排序后变为一个有序数组。图示:思考:利用递归采用分治的策略,大致意思就是两个儿子都搞(有序)好了,那么合起来的父亲肯定就搞好了,递归一般不好判断,但是一般是查看递归的末尾情况,所以归并的分治情况就是,当儿子被分为两个,且各自只有一个元素的时候,那么这两个儿子不用排序也是有序的,然后把连个儿子排序后,往上推就能够排好序了。归并排序的空间复杂程度为原创 2016-05-03 23:02:40 · 295 阅读 · 0 评论 -
排序-归并排序
题目描述:把一个乱序的数组排序后变为一个有序数组。思考:利用递归采用分治的策略,大致意思就是两个儿子都搞(有序)好了,那么合起来的父亲肯定就搞好了,递归一般不好判断,但是一般是查看递归的末尾情况,所以归并的分治情况就是,当儿子被分为两个,且各自只有一个元素的时候,那么这两个儿子不用排序也是有序的,然后把连个儿子排序后,往上推就能够排好序了。归并排序的空间复杂程度为O(N),时间复杂原创 2016-04-12 12:05:13 · 272 阅读 · 0 评论 -
链表-Linked List Cycle II(判断一个链表是否有环)
问题描述:Given a linked list, return the node where the cycle begins. If there is no cycle, return null.Note: Do not modify the linked list.Follow up:Can you solve it without using extra s原创 2016-04-07 20:29:56 · 445 阅读 · 0 评论 -
树-二叉树中某个节点的下一个节点
问题描述:给定一个二叉树,查找某个节点的下一个节点思考:略代码(java):public class FindNextNode { static class Node{ private int val; private Node left; private Node right; private Node parent; public Node(in原创 2016-04-25 17:05:39 · 539 阅读 · 0 评论 -
树-Invert Binary Tree(翻转二叉树)
问题描述:Invert a binary tree. 4 / \ 2 7 / \ / \1 3 6 9to 4 / \ 7 2 / \ / \9 6 3 1特别是这一句:Google: 90% of our engineers use the software you wrote原创 2016-04-09 21:51:33 · 916 阅读 · 0 评论 -
数组-Find Minimum in Rotated Sorted Array(旋转数组求最小值)
问题描述:Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Find the minimum element.You may assume no duplicate原创 2016-04-10 20:58:34 · 410 阅读 · 0 评论 -
队列-Implement Queue using Stacks(用栈实现队列)
题目描述:Implement the following operations of a queue using stacks.push(x) -- Push element x to the back of queue.pop() -- Removes the element from in front of queue.peek() -- Get the front ele原创 2016-04-15 07:56:34 · 327 阅读 · 0 评论 -
链表-Reverse Linked List(反转单向链表)
问题描述:Reverse a singly linked list.click to show more hints.Hint:A linked list can be reversed either iteratively or recursively. Could you implement both?思考:用遍历和递归两种方式实现,使用遍历很好原创 2016-04-16 07:20:00 · 795 阅读 · 0 评论 -
树-Path Sum II(指定和,求根到叶子的路径)
题目:Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.For example:Given the below binary tree and sum = 22, 5原创 2016-05-25 20:58:05 · 439 阅读 · 0 评论 -
数组-Search in Rotated Sorted Array(在一个旋转的数组中查找想要的值的指针)
问题描述:Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a target value to search. If found in the原创 2016-05-02 10:45:11 · 585 阅读 · 0 评论 -
栈-Implement Stack using Queues(用队列实现栈)
问题描述:Implement the following operations of a stack using queues.push(x) -- Push element x onto stack.pop() -- Removes the element on top of the stack.top() -- Get the top element.empty() --原创 2016-04-19 09:24:39 · 250 阅读 · 0 评论 -
树-Binary Tree Level Order Traversal II(反向打印二叉树)
问题描述:Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).For example:Given binary tree {3,9,20,原创 2016-04-18 11:48:49 · 651 阅读 · 0 评论