算法刷题VS面试刷题
整理自己做过的一些题目,并将其记录下来。寒假结束后打算找实习了,假期里会加强算法和编程能力的训练,刷的题目会按算法种类记录在专栏里面
头发太多而被寺庙拒收
总要让自己强大起来,才能保护身边的人
展开
-
腾讯50题刷题-python版
文章目录1. 简单题2. 中等题2.1 leetcode2-两数相加2.2 leetcode5-最长回文子串2.3 leetcode8-字符串转换整数2.4 leetcode11-盛最多水的容器2.5 leetcode15-三数之和2.6 leetcode16-最接近的三数之和2.7 leetcode33-搜索旋转排序数组2.8 leetcode43-字符串相乘2.9 leetcode46-全排列...原创 2020-03-04 13:12:06 · 2148 阅读 · 0 评论 -
leetcode刷题之链表专题
文章目录1.链表的操作1.1 删除链表的倒数第N个节点1.2 合并两个有序链表1.3 合并K个排序链表1.4 两两交换链表中的节点1.5 K个一组翻转链表1.6 旋转链表1.7 删除排序链表中的重复元素II1.8 删除排序链表中的重复元素1.9 分隔链表1.10 反转链表II1.11 重排链表1.12 对链表进行插入排序1.13 排序链表1.链表的操作1.1 删除链表的倒数第N个节点def...原创 2020-02-09 17:04:36 · 391 阅读 · 0 评论 -
面试基本数据结构和算法
文章目录1.排序算法1.1快排1.2 堆排2. 二叉树2.1 二叉树1.排序算法1.1快排def quick_sort(li, start, end): # 分治 一分为二 # start=end ,证明要处理的数据只有一个 # start>end ,证明右边没有数据 if start >= end: return # 定义...原创 2019-12-25 23:04:52 · 225 阅读 · 0 评论 -
python刷剑指offer
文章目录1. 二维数组中的查找2. 替换空格3. 从尾到头打印一个链表1. 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。# -*- coding:utf-8 -*-class Solution: # array 二维列表...原创 2019-12-09 11:38:54 · 226 阅读 · 0 评论 -
python刷题leetcode之简单题整理
文章目录leetcode1 两数之和leetcode1 两数之和原创 2019-11-06 16:22:02 · 2106 阅读 · 1 评论 -
leetcode6
class Solution {public: string convert(string s, int numRows) { int size = static_cast<int>(s.size()); // 当行数小于等于1 或 大于原串的size时不用转换 if (numRows <= 1 || numRows >= siz...原创 2018-10-17 12:31:42 · 153 阅读 · 0 评论 -
leetcode10
class Solution {public: bool isMatch(string s, string p) { if (p.empty()) return s.empty(); if (p.size() == 1) return (s.size() == 1 && (s[0] == p[...原创 2018-10-17 07:12:00 · 369 阅读 · 0 评论 -
leetcode9
class Solution {public: bool isPalindrome(int x) { if(x < 0) return false; string str = to_string(x); int i = 0; while(isspace(str[i])) ...原创 2018-10-16 22:18:24 · 217 阅读 · 0 评论 -
leetcode8
class Solution {public: int myAtoi(string str) { if(str.length() == 0) return 0; int i = 0, sign = 1, res = 0; while(isspace(str[i])) i ++; ...原创 2018-10-16 22:17:30 · 72 阅读 · 0 评论 -
leetcode7
class Solution {public: int reverse(int x) { long long res = 0; while(x) { res = res*10 + x%10; x /= 10; } return (res<INT_MIN||res>I...原创 2018-10-16 22:16:31 · 82 阅读 · 0 评论 -
leetcode20
解题思路:用一个栈保存未匹配的左括号,然后遍历字符串,判断当前字符是左括号还是右括号。如果当前字符是左括号,那么将其入栈;如果当前字符是右括号且栈非空,那么判断是否与栈顶的左括号相匹配,如果匹配则弹出栈顶元素,不匹配则返回false。最后判断栈是否为空。class Solution {public: bool isValid(string s) { stack<...原创 2018-10-16 22:15:09 · 175 阅读 · 0 评论 -
leetcode18
class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int> > res; int n = nums.size();...原创 2018-10-16 22:12:48 · 121 阅读 · 0 评论 -
leetcode17
class Solution {public: vector<string> letterCombinations(string digits) { vector<string> res; if(digits.length() == 0) return res...原创 2018-10-16 22:11:51 · 122 阅读 · 0 评论 -
leetcode16
class Solution {public: int threeSumClosest(vector<int>& nums, int target) { long res = INT_MAX; sort(nums.begin(), nums.end()); for(...原创 2018-10-16 22:04:29 · 97 阅读 · 0 评论 -
leetcode19
class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode** t1 = &head, *t2 = head; for(int i = 1; i < n; ++i) { t2 = t2-&...原创 2018-10-16 21:59:09 · 167 阅读 · 0 评论 -
leetcode4
class Solution {public: int findKth(vector<int> nums1, vector<int> nums2, int k) { int m = nums1.size(), n = nums2.size(); int i = 0, j = 0, cur = 0; while(i &...原创 2018-10-16 21:30:50 · 249 阅读 · 0 评论 -
leetcode1
暴力搜索:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> v(2); for(int i = 0; i < nums.size(); i ++) { ...原创 2018-10-16 21:27:52 · 304 阅读 · 0 评论 -
leetcode15
解题思路:题意是让我们在一个给定数组中S(假设这里数组S的长度为len),从len个元素任取3个元素,返回(满足:这3个元素和为0)的集合。算法思路: 步骤1. 首先,对数组nums 进行排序(从小到大);步骤2. 如果数组的长度的小于3,即当nums.size() < 3 时,此时满足条件的集合为空;步骤3. 依次考虑第一个元素选取为 nums[0], nums[1], ....原创 2018-10-15 07:08:55 · 82 阅读 · 0 评论 -
leetcode14
解题思路:题意让我们找到一组字符串中的最长公共前缀,下面举例说明:ABCD、ABC、ABDC、AB 这里字符串一共有4个,通过肉眼我们可以发现最长公共前缀为 AB。ABCD、ABC、ABDC、A 这里字符串一共有4个,通过肉眼我们可以发现最长公共前缀为A。通过上面的例子发现,最长公共前缀肯定包含在每一个字符串中。 算法思路: 步骤1. 如果strs.siz...原创 2018-10-15 07:03:07 · 253 阅读 · 0 评论 -
leetcode13
解题思路:步骤1. I 对应 1, V 对应 5, X 对应 10, L 对应 50, C 对应 100, D 对应 500, M 对应 1000; s就是有IVXLCDM这些字符组合而成。用p指向s中第一个字符,q指向s中第二个字符,用ans保存结果。 步骤2. 如果p指向字符对应的数值比q指向的大,则将p指向字符所对应的数值加到ans中;否则,从ans中减去p指向字符所对应数值。更新p...原创 2018-10-15 06:57:09 · 88 阅读 · 0 评论 -
leetcode11
解题思路:步骤1. left指向最左边的红点(left=0),right指向最后边的红点(right=height.size()-1),此时能装水的高度是 min(height[left], height[right]), 装水的宽度是 right-left.计算当前能装水的容量 和 之前最大值进行比较,即 res步骤2. left和right更新策略,谁短谁更新。更新left,即left...原创 2018-10-15 00:50:14 · 66 阅读 · 0 评论 -
leetcode12
题目分析:这道题目的要求是输入数字,得到对应的罗马数字。首先得明白Roman数字构成,具体如下所示:阿拉伯数字4 对应的罗马数字 IV 阿拉伯数字9 对应的罗马数字 IX 阿拉伯数字40 对应的罗马数字 XL 阿拉伯数字90 对应的罗马数字 XC 阿拉伯数字400 对应的罗马数字 CD在了解罗马数字的基础上,对题意展开分析可知步骤1. I 对应 1, V 对应 5, X ...原创 2018-10-15 00:45:21 · 131 阅读 · 0 评论 -
leetcode第五题
1.manacher法,思想如下:时间复杂度:O(n*n), 空间复杂度:O(1)高效解法:基本解法的时间复杂度已经到O(n*n),既然存在高效解法,势必要牺牲空间来换时间,才可以将时间复杂度降低。 首先分析基本算法:外层for循环用于选择中心点,内层两边for循环分别考虑回文子串长度为奇数和偶数。首先我们考虑将回文子串长度全部变为奇数。 分别在字符串(举例:该字符串为“ABBABCBA...原创 2018-10-13 22:34:03 · 540 阅读 · 0 评论 -
leetcode第三题
采用动态规划的方法去做,核心思想如下:"滑动窗口" 比方说 abcabccc 当你右边扫描到abca的时候你得把第一个a删掉得到bca, 然后"窗口"继续向右滑动,每当加到一个新char的时候,左边检查有无重复的char, 然后如果没有重复的就正常添加, 有重复的话就左边扔掉一部分(从最左到重复char这段扔掉),在这个过程中记录最大窗口长度cl...原创 2018-10-13 22:14:47 · 1279 阅读 · 0 评论 -
leetcode第二题
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* ad...原创 2018-10-13 21:00:50 · 90 阅读 · 0 评论 -
CCF201403-03
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<map>using namespace std;char s[300];map<char,int> o,a;map<char,string>原创 2018-08-16 17:58:53 · 200 阅读 · 0 评论 -
CCF201312-03
#include<iostream>#include<algorithm>using namespace std;int main(){ int n,num=0; cin>>n; int arr[n]; for(int i=0;i<n;i++){ cin>>arr[i]; } ...原创 2018-08-16 17:58:03 · 97 阅读 · 0 评论 -
CCF201709-02
#include<iostream>#include<algorithm>using namespace std;struct Key{ int key; int time; int operation;}Op[2000];bool cmp(Key key1, Key key2)//{ if (key1.time != key2...原创 2018-08-24 08:36:59 · 245 阅读 · 0 评论 -
CCF201609-02
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm> using namespace std; int a[25][6]; int main(){ int n,i,j,k,cnt; scanf("%d",&n...原创 2018-08-23 15:36:21 · 108 阅读 · 0 评论 -
CCF201403-02
#include <iostream>using namespace std;int main(){ int n; cin >> n; int i; int map[100][100] = { 0 }; for (i = 0; i < n; i++){ int a[4]; cin >&g...原创 2018-08-23 15:34:24 · 96 阅读 · 0 评论 -
CCF201409-02
#include<iostream>#include<map>using namespace std;int main(){ int n; cin>>n; int i; int map[101][101]={0}; for(i=0;i<n;i++){ int a[4]; cin&...原创 2018-08-16 17:59:48 · 108 阅读 · 0 评论 -
CCF201712-02
#include<iostream>using namespace std;int main(){ int n,k,count=0; cin>>n>>k; int a[n]={0}; int sum=n; while(sum>1){//只剩一人,结束 for(int i=0;i<n;i++...原创 2018-08-02 18:59:16 · 147 阅读 · 0 评论 -
CCF201803-2
#include<iostream>using namespace std;int main(){int n,L,t,i,j;cin>>n>>L>>t;int a[100],v[100];for(i=0;i<n;i++) {v[i]=1;cin>>a[i];}while(t--){for(i=0;i<n...原创 2018-06-14 21:12:13 · 441 阅读 · 0 评论 -
CCF201703-02
#include<iostream>#include<cstdio>using namespace std;const int N = 1005;int a[N];int n; void forward(int p, int q){ for(int i = 0; i < n; i ++){ if(a[i]==p){ ...原创 2018-08-23 15:23:31 · 186 阅读 · 0 评论 -
CCF201612-02
#include<iostream>#include<cstdio>using namespace std;int main(){ int t,a,ans; cin>>t; for(int i=0;i<=1800;i++) //暴力枚举,这里税前工资要枚举更大些 { int a=i*100-3500...原创 2018-08-23 15:20:27 · 117 阅读 · 0 评论 -
CCF201603-02
#include<iostream>using namespace std;int main(){ int container[15][10]; int pattern[4][4]; int offset; //默认空余行为14 int col[4]={14,14,14,14}; //注意:默认15,原因:如果ma过小,当col=1,...原创 2018-08-23 15:19:57 · 106 阅读 · 0 评论 -
CCF201412-02
#include <iostream> using namespace std; const int N = 500;int a[N][N]; int main(){ int n, x, y; // 输入数据 cin >> n; for(int i=0; i<n; i++) for(int j=0; ...原创 2018-08-23 15:19:08 · 86 阅读 · 0 评论 -
201312-02
#include<iostream>#include<cstring>using namespace std;int main(){ int s[15]; char str[15]; for(int i=0,j=0;i<13;i++){ cin>>str[i]; if(str[i]!='-'){...原创 2018-08-23 15:18:25 · 93 阅读 · 0 评论 -
CCF201503-02
#include<iostream>using namespace std;int main(){ int n; cin>>n; int a[n]; int b[1001]={0}; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i...原创 2018-08-23 15:17:33 · 116 阅读 · 0 评论 -
CCF201512-02
#include<iostream>using namespace std;int a[35][35],b[35][35];int main(){ int m,n; cin>>m>>n; for(int i=0;i<m;i++) for(int j=0;j<n;j++){ cin>>a...原创 2018-08-23 15:16:59 · 122 阅读 · 0 评论