LeetCode
ojshilu
https://github.com/lucky521
展开
-
依然是最长回文子串 9OJ-1528
1528编号的9oj,回文问题。这个题用比较好的动态规划法的话会出现内存溢出,因为输入的字符串长度太长了。表示状态量的二维数组存不下。换成最直观的办法反倒AC了。就是:依次以每一个字符为回文中心往两端扩大判断,依次以两个相同的字符为中心往两端扩大判断。#include #include #include #define N 200000int LongestPalin原创 2013-10-03 16:53:34 · 923 阅读 · 0 评论 -
ZigZag Conversion
题目源自于Leetcode,非常简单的一道题。最重要是理解题意,知道什么是zigzag。开始有点受题目上的排版干扰。后来发现,其实就是走的折线,如n=5:0123432101234321……一直波动。解法:用的vector的数组分别保存每个行。之后再s.assign(v.begin(),v.end())赋值给string。代码:#include #incl原创 2013-10-13 14:06:43 · 1079 阅读 · 0 评论 -
实现String to Integer (atoi)
题目源自于Leetcode。思路:一定要考虑所有的情况。一、合法性检查1、输入字符型指针是否指向空?2、输入字符串内是否有非阿拉伯数字?(是否允许字符串开头有空格?是否允许字符串后面出现其他字符?)二、特殊情况1、正负数情况2、溢出情况的判断:这里我用的是一个64位整型数来帮忙的。INT_MAX (2147483647) 和 INT_MIN (-原创 2013-10-13 15:37:39 · 1179 阅读 · 0 评论 -
将阿拉伯数字转换成罗马数字 Integer to Roman
题目源自于leetcode。题目:将一个int型的阿拉伯数字转换为string型的罗马数字。方法:首先要知道罗马数字的表示法。个位、十位、百位、千位都是特点的字幕作为权值,每一个位的10个数字的表示方法也类似,都会在5有另一个中间的字母。 M=1000 D = 500原创 2013-10-17 14:27:33 · 3975 阅读 · 0 评论 -
将罗马数字字符串转换为阿拉伯整形数 Roman to Integer
题目源自于leetcode,和前一道是正好相反的计算。另一道题在http://blog.csdn.net/luckyjoy521/article/details/12836795思路:需要进行字符串的匹配,但是罗马数字并不是前/后缀编码,暂时没有想到好的方法。所以就枚举吧。代码:class Solution {public: int romanToInt(st原创 2013-10-18 14:34:56 · 1626 阅读 · 0 评论 -
交换单链表中相邻的两个元素 Swap Nodes in Pairs
题目源自于leetcode。题目: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 onl原创 2013-10-30 20:39:59 · 3803 阅读 · 0 评论 -
生成所有括号匹配情况 Generate Parentheses
题目源自于leetcode。题目:Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:"((()))", "(()())", "(())()",原创 2013-10-28 11:08:00 · 1423 阅读 · 0 评论 -
简单的正则表达式匹配 Regular Expression Matching
题目源自于Leetcode。只需要支持两个匹配符*和.。'.' Matches any single character.'*' Matches zero or more of the preceding element.本题的要求是能够全部匹配整个母字符串,而不是包含有。The matching should cover the entire input string (no原创 2013-10-13 22:41:33 · 2432 阅读 · 0 评论 -
求一个数的平方根
方法一: 使用标准库函数, 中的sqrt函数直接计算。其函数原型为: float sqrt (float),double sqrt (double),double long sqrt(double long)但是不知道标准库函数时怎么实现的。方法二:二分查找法可以根据自己希望的精确度来规定循环的结束条件。[cpp] view原创 2013-10-21 10:29:41 · 6595 阅读 · 0 评论 -
删除序列中的指定元素 Remove Element
题目源自于Leetcode。题目:Given an array and a value, remove all instances of that value in place and return the new length.The order of elements can be changed. It doesn't matter what you leave beyond the原创 2013-11-04 14:11:16 · 1629 阅读 · 0 评论 -
手机键盘上的排列组合问题 Letter Combinations of a Phone Number
题目源自于Leetcode。题目:Given a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons) is given below.思路:原创 2013-10-20 17:25:50 · 1429 阅读 · 0 评论 -
链表的部分逆转 Reverse Nodes in k-Group
题目源自于leetcode。题目: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 sho原创 2013-11-05 20:47:33 · 1505 阅读 · 0 评论 -
一个序列里的数字都是成对的,只有一个是单个的,找出来。
#include#includeusing namespace std;int main(){ int n,result=0; scanf("%d",&n); if(n%2 == 0) { printf("impossible!\n"); //这样的序列的个数一定是奇数个元素 return 0; } int *a = new int[n]; f原创 2013-07-15 21:07:52 · 2216 阅读 · 1 评论 -
判断两棵树是一模一样的 Same Tree
题目源自于Leetcode。简单的递归题。题目: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原创 2013-11-06 14:05:49 · 1371 阅读 · 0 评论 -
求单链表环的入口结点 Linked List Cycle II
对于单链表,有的没有环,最后一个结点指向NULL,从头遍历到NULL就结束了。而有的是存在环,那么遍历时会在环内死循环,没有结尾。本题目源自于leetcode。经典题目。题目:Given a linked list, return the node where the cycle begins. If there is no cycle, return null.solve it with原创 2013-11-22 21:21:56 · 2147 阅读 · 0 评论 -
寻找树根到叶子的权值之和为sum的路径 Path Sum
题目源自于Leetcode。简单题。本题只要求找是否存在,而没要求返回满足条件的路径。题目:Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.Fo原创 2013-11-24 00:44:57 · 1116 阅读 · 0 评论 -
杨辉三角生成 Pascal's Triangle
题目源自于Leetcode。简单题。题目:Given numRows, generate the first numRows of Pascal's triangle.返回值的形式是vector里面含vector。杨辉三角英文名叫帕斯卡三角。思路:很简单。没什么技术。本一轮vector用的是上一轮vector的值做相邻值加法。两遍添加两个1。代码:class Solutio原创 2013-11-11 13:44:40 · 1507 阅读 · 0 评论 -
平衡二叉树判定 AVL Balanced Binary Tree
题目源自于leetcode。题目:Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every原创 2013-11-11 14:43:14 · 1754 阅读 · 0 评论 -
写出杨辉三角的某一行 Pascal's Triangle II
题目源自于leetcode。题目:Given an index k, return the kth row of the Pascal's triangle.For example, given k = 3, Return [1,3,3,1].思路:杨辉三角的每一行其实是二项式系数的序列。二项式系数C(n,r),可以用排列组合里的数学公式直接求,但是对于计算机来讲乘法和原创 2013-11-27 20:46:01 · 2754 阅读 · 0 评论 -
矩阵上寻找最短路径 Minimum Path Sum
题目源自于leetcode。图问题。题目:Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You can only move ei原创 2013-11-14 12:01:28 · 4730 阅读 · 0 评论 -
Plus One
题目源自于leetcode。简单题。题目:把一个整数的每一位分成一个int放到一个vector里,求这个整数的加1所得的vector。思路:很简单,关注进位和边界条件。代码:class Solution {public: vector plusOne(vector &digits) { int n = digits.size(); if(n原创 2013-11-27 18:30:19 · 933 阅读 · 0 评论 -
二分查找有序数组中某个数的所在范围 Search for a Range
题目源自于leetcode。二分查找题。题目:Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the原创 2013-12-04 20:38:52 · 3383 阅读 · 0 评论 -
Sum Root to Leaf Numbers
题目源自于leetcode。二叉树递归算数题。题目:Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.An example is the root-to-leaf path 1->2->3 which represents the nu原创 2013-12-06 19:43:28 · 849 阅读 · 0 评论 -
著名的递推查数序列 Count and Say Sequence
题目源自于leetcode。题目: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 2原创 2013-12-06 20:40:45 · 2297 阅读 · 0 评论 -
字符串中最后一个单词的长度 Length of Last Word
题目源自于leetcode。简单题。题目:Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.If the last word does not exist, ret原创 2013-12-14 16:00:27 · 1488 阅读 · 0 评论 -
Anagrams 变位词
Anagrams 可以翻译为变位词,对于英语来说一个英文单词的Anagrams,是把单词的字母顺序作调整从而变成另外的一个单词。还有一个中文的称呼叫做兄弟字符串。题目源自于leetcode。题目:Given an array of strings, return all groups of strings that are anagrams.Note: All inputs will原创 2013-12-15 16:54:57 · 1431 阅读 · 0 评论 -
寻找01矩阵中最大的子矩阵 Maximal Rectangle
题目:Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and return its area.即寻找01矩阵中最大的纯1矩阵。思路:DFS/BFS的图算法难以判断所找到的聚类是否是矩形的。DP算法似乎需要很复杂的状态量。因此这两种方法我都没走到底原创 2014-02-20 22:27:24 · 2678 阅读 · 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).思路:由于题目要求输出结果中每一层的结点是分开的。所以需要再层序遍历的过程中加入一个原创 2014-02-21 19:49:06 · 990 阅读 · 0 评论 -
二进制加法的实现(字符串形式) Add Binary
题目:Given two binary strings, return their sum (also a binary string).For example,a = "11"b = "1"Return "100".思路:二进制加法和普通加法的思路没什么差别,甚至更简单。所需要注意的细节就是进位。从最低位开始,进位可能伴随计算直到最高位。所以每一位的加法运算都要将上一原创 2014-02-21 20:31:05 · 5952 阅读 · 0 评论 -
找出二叉树中和为k的所有路径 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.该问题和之前的路径和问题相比,进阶了一步。之前的问题是,判断是否有这样的一条路径,返回布尔值即可。本问题是要找出所有的路径,并且把它们返回。注意:二叉树的结点元素可以是负数的,所有不走到原创 2014-02-23 11:51:14 · 3334 阅读 · 0 评论 -
简化文件的绝对路径 Simpify Path
在操作系统中,每个文件都有一个绝对路径。并且其最简化的形式是唯一的。对于Unix系列系统,绝对路径是从根路径/开始的,用正斜杠表示。一个句点.表示当前路径,两个句点..表示上一级路径。对于一个路径字符串,从左到右依次读。下面的程序是用来简化Unix文件系统的路径字符串,使其达到最简化的程序,取出中间多余的/或者重复的层次进出。思想:用一个栈来维护绝对路径中从根到文件的纯净的层次次序,去除重原创 2014-02-23 14:37:18 · 3752 阅读 · 0 评论 -
字符串窗口覆盖 Minimum Window Substring
题目:Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).For example,S = "ADOBECODEBANC"T = "ABC"Minimum window is "原创 2014-02-25 21:37:36 · 1072 阅读 · 0 评论 -
Binary Tree Zigzag Level Order Traversal
题目:Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).思路:层序遍历的一个小小的变种。偶数层把顺序逆置原创 2014-02-26 21:26:10 · 982 阅读 · 0 评论 -
蛇形螺旋矩阵的生成和遍历 Spiral Matrix
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]一个n*n矩阵像上面这样,自然数从1到n,由外到里螺旋者走,这样叫Spiral Matrix。现在有两件事:第一件事是让你生成一个这样的矩阵;第二件事是给你一个普通的矩阵,让你按照这样的顺序(Spiral Order)来遍历这个矩阵。数学上位置和数字似乎没有什么特别原创 2014-02-27 20:10:51 · 2341 阅读 · 1 评论 -
Restore IP Addresses
Leetcode问题:Given a string containing only digits, restore it by returning all possible valid IP address combinations.For example:Given "25525511135",return ["255.255.11.135", "255.255.111.35原创 2014-03-02 11:50:29 · 863 阅读 · 0 评论 -
数独判断 Valid Sudoku
问题:源于leetcode。这不是要求解数独,而是判断当前的局面有没有违反数独的要求。思路:注意这几点。1、数独都是9*9的;2,数组的九个数字是1~9,跟计算机中常见的0起始的0~8要做个区分。判断方法:按照规定:1、每行没有重复数。2、每列没有重复数。3、9个小方形中也没有重复数。代码:class Solution {public: bool isValidSudok原创 2014-03-04 19:18:38 · 1592 阅读 · 0 评论 -
生成N皇后问题所有局面 N-Queens
Backtracking is a general algorithm for finding all (or some) solutions to some computational problem, that incrementally builds candidates to the solutions, and abandons each partial candidate c ("ba原创 2014-03-10 19:25:17 · 973 阅读 · 0 评论 -
回文判定 Valid Palindrome
看似简单的问题总是非常容易出错!典型的测试用例非常关键!问题:Given a string, determine if it is a palindrome, considering onlyalphanumeric characters and ignoring cases.For example,"A man, a plan, a canal: Panama" is a p原创 2014-03-05 10:07:31 · 1032 阅读 · 0 评论 -
修复二叉查找树 Recover Binary Search Tree
问题:给出一个有问题的二叉查找树,其中有一对儿结点上的数字弄反了。要求把它俩找出来并恢复到正常的二叉查找树。思路:正常的二叉查找树,中序遍历应该是递增序列。现在有一对数被交换了。那么中序序列中必定先遇到一个比其右边的数要大的数,然后再遇到一个比起左边的数小的数。这两个数就是应该被交换回来的数。比如交换两个不相邻的数 1 2 3 4 5,交换成 1 4 3 2 5,会发现两个降序原创 2014-03-06 20:01:19 · 1513 阅读 · 0 评论 -
字符串中某子序列的个数 Distinct Subsequences
问题:Given a string S and a string T, count the number of distinct subsequences of T in S.要求出S中所有的为T的子序列。思路:一、直观想法:递归试探。指数级复杂度。class Solution {public: int numDistinct(string S, string T)原创 2014-03-11 19:36:55 · 2385 阅读 · 0 评论