- 博客(19)
- 收藏
- 关注
原创 左旋向量或字符串
问题描述:将一个n元一维向量或者字符串向左旋转i个位置。例如,当n=8且i=3时,abcdefgh 旋转为 defghabc。 方法1:将前i个元素储存在临时数组中,将剩下的n-i个元素向左移动i个位置。此方法的缺点是产生过大的存储空间消耗。 代码如下: #include using namespace std; void rotateArray1(string &v, int
2015-03-19 20:15:36 373
原创 约瑟夫环问题
问题描述:有n个人坐成一圈,编号为1到n,从编号为1的人开始传递热马铃薯。m次传递之后,持有热马铃薯的人退出游戏,圈缩小,然后游戏从退出人下面的人开始,继续进行。最终留下来的人获胜。这样,如果m=0,n=5,那么参加游戏的人依次推出,5号获胜。如果m=1,n=5,那么退出的顺序是2、4、1、5。 方法1:使用循环链表的数据结构来解决。 代码如下:
2015-03-16 17:03:38 357
原创 N皇后问题
问题描述:在一个N * N的棋盘中放置N个皇后,使得每个皇后都不在同一行、同一列和同一斜线上,总共有多少种放置方法。 思路:遍历棋盘的每一行,在该行中遍历列来寻找合适的位置放置皇后。如果找到合适的位置,放置皇后之后,跳到下一行。否则,回溯到上一行,找到该行下一个合适的列来放置皇后,再往下遍历。 在编程的具体实现中,可以用二维数组或一维数组两种方式来表示棋盘的行和列,回溯法也有递归和非递归(即迭
2015-03-14 16:59:10 306
原创 Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. 思路: 遍历字符串数组,维护一个字符串prefix,与数组中的每个字符串相比较,来保存最长前缀。 代码如下: class Solution { public: string longestComm
2015-01-23 10:29:16 310
原创 Roman to Integer
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 思路: 总共有7个基本的罗马数字字符,其它数字可以通过这些字符组合得到,如 IV 大小为4,可以看成是 V - I,VI 大小为6,可以看成是 V + I
2015-01-21 22:15:42 383
原创 Integer to Roman
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 方法1:列出整数的个位、十位、百位和千位的0~9各自对应的罗马数字字符,并将这些字符合并。 代码如下: class Solution { public: string
2015-01-01 16:58:01 238
原创 Regular Expression Matching
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the entire in
2014-12-30 20:50:58 249
原创 Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space. 方法1: 用另一个 int 保存与原整数顺序相反的数,再判断两个整数是否相等。 代码如下: class Solution { public: bool isPalindrome(int x) { if(x < 0)
2014-12-22 14:58:25 246
原创 Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring. 方法1:用两个下标 i 和 j 追踪每个重复子
2014-12-22 00:38:40 234
原创 String to Integer (atoi)
注意事项: (1)当字符串中没有数字时,返回0; (2)由字符串转化而来的数字可能超出 int 的取值范围,故结果应该用 long long 类型来保存,当超出int取值范围时,返回 INT_MAX 或 INT_MIN; (3)字符串中开头可能有一个或多个空格符; (4)字符串中可能有 '+','-' 符号。 代码如下: class Solution { public:
2014-12-11 22:34:40 249
原创 Reverse Integer
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 题意:将一个整数的位数顺序相反。 思路:先确定整数的正负,记录下来,并将负的转化为正的,再用%10取余,先得到较低的位数,在取下一位之前乘以10,最终可得到所需的整数。 注意事项:reverse
2014-12-10 19:37:19 250
原创 ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) P A H N A P L S I I
2014-12-06 22:19:25 233
原创 用邻接链表实现BFS算法和DFS算法
代码如下: Link_Graph.h文件: /*-------------------------------------------- 用邻接链表来表示图,并实现广度优先搜索算法 和深度优先搜索算法 --------------------------------------------*/ #ifndef LINK_GRAPH_H #define LINK_GRAPH_H #includ
2014-12-04 14:32:54 777
原创 const iterator 和 const_iterator 的区别
1、const iterator是指iterator本身是const的,即不能修改迭代器iterator的值(如自增it++、遍历容器等操作),但是可以修改iterator所指向的容器元素的值。 2、const_iterator是只读迭代器,即const_iterator只能遍历容器、读取它所指向的容器元素的值,它本身的值可以修改,但是不能修改它所指向的容器元素的值。const_iterator
2014-12-03 20:53:30 325
原创 Longest Substring Without Repeating Characters
方法1:动态规划 遍历字符串到下标i时,若s[i]在以下标i-1的不重复子串中重复出现,则找到其位置j,当前不重复子串的长度dp为i-j。若没有重复出现,则当前不重复子串长度为上一个不重复子串长度加1。 int lengthOfLongestSubstring(string s) { int dp = 1; /*不重复子串的长度*/ int last_st
2014-12-03 14:35:13 238
原创 Add Two Numbers
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *ad
2014-11-30 22:13:13 241
原创 第18章 B树的创建、搜索和插入
/*--------------------------------------- B树的创建和插入 ---------------------------------------*/ #include #include #define t 2 //B树的度 using namespace std; /*------------------------------
2014-11-28 12:31:17 341
原创 Median of Two Sorted Arrays
题目如下: There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)) 1.我首先想到的是先把两个数组用归并排序,组合成一个数组,
2014-11-26 22:10:37 232
原创 第17章 二进制计数器递增代码
#include using namespace std; /*a[]保存二进制数的每一个位,每调用一次,二进制数加1*/ void increment(int a[], int n) { int i = 0; while(i < n && a[i] == 1) { a[i] = 0; i++; } if(i < n) { a[i] = 1; } } /*测试程序*
2014-11-25 18:46:35 885
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人