算法
文章平均质量分 58
key2value
爱历史 爱IT于规范下做到最好
展开
-
归并排序
#include "iostream.h"using namespace std;void merge(int A[], int Tmp[], int leftStart,int rightStart, int rightEnd){ int number = rightEnd-leftStart+1; int leftEnd = rightStart-1; int left=leftSt原创 2014-12-04 19:33:14 · 687 阅读 · 0 评论 -
斐波那契数列的矩阵解法(java实现)
使用了二分法import java.util.Scanner;/** * 求斐波那契数列 * * [F(n+1) F(n)] [1 1 ]^n (n次方,可以使用归纳法证明) * | | =| | * [F(n) F(n-1)] [1 0 ]原创 2015-03-27 16:36:14 · 3570 阅读 · 3 评论 -
Number of Islands
Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assu原创 2015-04-09 18:50:50 · 794 阅读 · 0 评论 -
求从1到参数n中的各个数字中,各个位上1出现的次数和
/** * 求从1到参数n中的各个数字中,1出现的次数和 * * @param n * @return */ public static int countOne(int n) { int factor = 1; int cur; int low; int high; int cnt = 0; while ((n / factor) != 0) {原创 2015-04-26 10:28:46 · 723 阅读 · 0 评论 -
翻转字符串中单词的顺序
问题:翻转字符串中的单词顺序,如“hello world”变成“world hello”。要求使用常量空间。c++代码如下:void reverse(string &s, int start, int end){ int len=end+start; int center=len/2; for(int i=start;i<center;i++){原创 2015-04-25 21:02:00 · 968 阅读 · 0 评论 -
编程之美3.2 电话号码对应英语单词
java实现:import java.util.ArrayList;import java.util.List;public class Telphone { /** * 保存每个数字对应的字母序列 */ static String[] c = new String[] { "", // 0 "", // 1 "abc", // 2 "def", /原创 2015-04-26 18:34:30 · 775 阅读 · 0 评论 -
Implement Trie (Prefix Tree)
Implement a trie with insert, search, and startsWith methods.Note: You may assume that all inputs are consist of lowercase letters a-z.思路: 之前也没有接触过Trie,百科上查了一下,大概就是词源的问题,N个word有公共前缀,只是后缀不同,可以用树表示。 可原创 2015-05-08 21:32:21 · 1026 阅读 · 0 评论 -
Isomorphic Strings
Given two strings s and t, determine if they are isomorphic.Two strings are isomorphic if the characters in s can be replaced to get t.All occurrences of a character must be replaced with anot原创 2015-04-30 21:37:42 · 856 阅读 · 0 评论 -
Count and Say
The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221, …1 is read off as “one 1” or 11. 11 is read off as “two 1s” or 21. 21 is read off as “one 2, the原创 2015-05-07 20:28:37 · 954 阅读 · 0 评论 -
Dungeon Game
The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeon consists of M x N rooms laid out in a 2D grid. Our valiant knight (K) was initially p原创 2015-04-07 20:00:19 · 537 阅读 · 0 评论 -
Binary Tree Right Side View
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.For example:Given the following binary tree, 1原创 2015-04-04 08:57:39 · 1063 阅读 · 0 评论 -
House Robber
House Robber Total Accepted: 212 Total Submissions: 780My SubmissionsQuestion Solution You are a professional robber planning to rob houses along a street. Each house has a certa原创 2015-03-31 20:07:07 · 1408 阅读 · 0 评论 -
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 ↘原创 2014-12-03 19:17:35 · 710 阅读 · 0 评论 -
Unique Paths
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the原创 2015-03-08 15:01:08 · 587 阅读 · 0 评论 -
Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given an encoded message containing digits, determine the total nu原创 2015-03-09 18:43:20 · 408 阅读 · 0 评论 -
最近点对(Java实现)
最近点对问题:在二维平面上的n个点中,快速的最近的一对点的距离。java实现:package p2;import static java.lang.Math.*;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Compara原创 2015-03-27 22:02:36 · 6021 阅读 · 2 评论 -
集合的子集
题目:给定集合,求它的子集集合。import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;import java.util.List;public class Permutation { public static void main(String[] args) {原创 2015-03-14 13:50:49 · 741 阅读 · 0 评论 -
栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。import java.util.Stack;public class Stk { public st原创 2015-03-14 10:25:53 · 700 阅读 · 0 评论 -
寻找第K个丑数
把只包含质因子2、3和5的数称作丑数(Ugly Number),例如:2,3,4,5,6,8,9,10,12,15,等,习惯上我们把1当做是第一个丑数。写一个高效算法,返回第n个丑数。import static java.lang.Math.min;import static java.lang.System.out;public class UglyNumber {原创 2015-03-14 15:24:31 · 1401 阅读 · 0 评论 -
二进制中1的个数以及时间比较
public class Algorithm { public static void main(String[] args) { long t1 = System.currentTimeMillis(); for (int i = -10000000; i < 10000000; i++) { countOne(i); } long t2 = System.curren原创 2015-03-18 21:29:50 · 1184 阅读 · 0 评论 -
Fraction to Recurring Decimal
Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.If the fractional part is repeating, enclose the repeating part in parentheses.For exam原创 2015-05-07 19:22:13 · 710 阅读 · 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?思路: 迭代的方式,可以使用一个哨兵节点,方便反转;原创 2015-05-05 18:52:50 · 759 阅读 · 0 评论 -
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.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two原创 2015-07-11 21:27:37 · 871 阅读 · 0 评论 -
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?思路: 把链表一分为二,把右边的一半翻转,再逐个比对左右的链表即可。/** * Definition for singly-linked list. * struc原创 2015-07-10 22:34:29 · 1381 阅读 · 0 评论 -
Rectangle Area
Find the total area covered by two rectilinear rectangles in a 2D plane.Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.Rectangle Area Assume that the t原创 2015-06-08 21:16:18 · 954 阅读 · 0 评论 -
Missing Number
Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.For example, Given nums = [0, 1, 3] return 2.Note: Your algorithm should run in line原创 2015-08-24 10:10:06 · 645 阅读 · 0 评论 -
Remove Duplicates from Sorted Array
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with cons原创 2015-08-02 20:21:05 · 646 阅读 · 0 评论 -
#1014 : Trie树
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?”身经百战的小Ho答道:“怎么原创 2015-09-28 19:07:05 · 609 阅读 · 0 评论 -
Two Sum
Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe原创 2014-12-03 20:27:26 · 703 阅读 · 0 评论 -
leetcode--Kth Smallest Element in a BST
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.Note: You may assume k is always valid, 1 ≤ k ≤ BST’s total elements.Follow up: What if the BST is mod原创 2015-07-02 21:20:51 · 4261 阅读 · 0 评论 -
堆排序(最大堆)
#include "iostream.h"using namespace std;//因为i从0开始 #define LeftChild(i) (2*(i)+1)//i-N范围内,创建最大堆 void maxHeap(int A[], int i, int N){ int tmp; int child; for(tmp=A[i];LeftChild(i)<N;i=child){原创 2014-12-04 18:45:23 · 876 阅读 · 0 评论 -
Count Complete Tree Nodes
Given a complete binary tree, count the number of nodes.Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibly the last, is completely filled, and原创 2015-06-06 13:36:27 · 1154 阅读 · 0 评论 -
Kth Largest Element in an Array
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, return 5.原创 2015-05-23 18:16:33 · 1122 阅读 · 0 评论 -
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.Given 1->1-原创 2015-05-04 21:38:50 · 727 阅读 · 0 评论 -
Find Peak Element
A peak element is an element that is greater than its neighbors.Given an input array where num[i] ≠ num[i+1], find a peak element and return its index.The array may contain multiple peaks, i原创 2014-12-22 20:49:52 · 640 阅读 · 0 评论 -
Add and Search Word - Data structure design
Design a data structure that supports the following two operations:void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing only letters a原创 2015-05-16 19:46:44 · 1211 阅读 · 0 评论 -
LRU Cache 暨LinkedHashMap源码阅读
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.get(key) - Get the value (will always be positive) of the key if原创 2015-05-06 19:23:36 · 875 阅读 · 0 评论 -
OSCache源码阅读(二)
前文LRU Cache 暨LinkedHashMap源码阅读提到了如何使用LinkedHashMap来实现一个LRU数据结构,今天在看OSCache代码算法部分的时候,就用到了该知识,what was done contributes what is done now。algorithm包是包含下列缓存过期策略的类: 下面重点介绍LRU和FIFO。LRUprivate Collection l原创 2015-05-07 11:51:17 · 1032 阅读 · 0 评论 -
最后一个被删除的元素
n个元素围成一圈,每次删除第m个元素,求最后一个被删除的元素。#include <iostream.h>#include "list"using namespace std;//使用list而非vector int findLast(int m,int n){ if(m<=0||n<=0){ return -1; } list<int> v;原创 2015-05-30 15:38:05 · 806 阅读 · 0 评论 -
House Robber II
Note: This is an extension of House Robber.After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all原创 2015-05-30 20:20:13 · 684 阅读 · 0 评论