链表——递归、迭代
括号配对——栈
链表节点——涉及到双指针
双指针进一步使用
17. 电话号码的字母组合 - 力扣(LeetCode)时间复杂度 (4^n)*n暴力深搜:dfs深搜,模板、思路相同,递归与回溯(提前设定跳出条件,函数层层调用,实现深度优先遍历)class Solution { public: vector<string> ans;//存储答案:字符串组合 string strs[10] = { "", "", "a
双指针
14. 最长公共前缀 - 力扣(LeetCode)力扣经常出现输入为空的监测点,所以需要特判,为空直接返回。直接两重循环,一层枚举字符串,一层枚举字符串内字符普通的枚举,两重循环;重要的是判断条件的考虑周全class Solution { public: string longestCommonPrefix(vector<string>& strs) {
13. 罗马数字转整数 - 力扣(LeetCode)根据前后字母代表数值大小,确定是加上还是减去该值(罗马数字的辨识规则)把字母映射成一个数字:使用哈希表 "unordered_map"然后从前往后枚举每一个字符,比较大小,确定加上还是减去这个值class Solution { public: int romanToInt(string s) { //开一个哈希表,把字母映
12. 整数转罗马数字 - 力扣(LeetCode)根据规则,列出数字对应表,便于之后打表。圈出的为临界值,用来定范围:只需把目标数放到对应范围,然后依次减去临界值,不断重复直到表示出整个整数。class Solution { public: string intToRoman(int num) { int values[] = {//打表找出的临界值
双指针、贪心
9. 回文数 - 力扣(LeetCode)学习间接的代码风格:数字反转法:class Solution { public: bool isPalindrome(int x) { if(x<0) return false;//特判情况不能忘 long long y = 0; for(int i = x; i; i/=10){
8. 字符串转换整数 (atoi) - 力扣(LeetCode)参考 力扣7 面对三十二位带符号整数的范围限制,用到INT_MAX和INT_MIN两个常量限定范围。(应对leetcode中的溢出问题)使用 long longclass Solution { public: int myAtoi(string s) { int k = 0; while(k&l
7. 整数反转 - 力扣(LeetCode)INT_MAX INT_MIN宏:常量INT_MAX <climits> 头文件定义的一个宏,是一个常量, 表示当前编译环境中 int 类型可以存储的最大整数值 INT_MAX 的值是 2147483647。这个值是 2^31 - 1 即int 类型在32位系统中的最大正整数值。cpp中取模运算%:负数抛过符号,得到的正数取模,得到的结
6. Z 字形变换 - 力扣(LeetCode)两个点:将原字符串转化为z形,考虑位置?开数组记录位置?;排列好之后,如何按行读出字符串实际不用考虑形式上的转换,找规律:按照等差数列的形式,直接列出答案(这种奇怪题,先考虑找规律)class Solution { public: string convert(string s, int n) {//numRows为n str
回文子串
力扣hard
待复习
2. 两数相加 - 力扣(LeetCode)current是两数和的链表的尾节点(在尾节点插入值)/** * 定义单链表结构 可直接使用 * Definition for singly-linked list. * struct ListNode { * int val;// 节点存储的数据 * ListNode *next;// 指向下一个节点的指针 // 默认
力扣1
P3406 海底高铁 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)给定一段一段的(两个端点),用差分可以在知道端点的情况下对区间加加或减减AC:#include<bits/stdc++.h> using namespace std; const int N = 1e5+5; typedef long long LL; int n, m; int a[N], b[N]
P1638 逛画展 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)651. 逛画展 - AcWing题库双指针左右伸缩时间复杂度o(n)#include<bits/stdc++.h> using namespace std; const int N = 1000010; int n, m, cnt;//画家计数 int g[N], d[N]; struct node
117. 占卜DIY - AcWing题库模拟题:看懂题目;选用合适的数据结构模拟题目操作#include <cstring> #include <iostream> #include <algorithm> #include <vector> using namespace std; vector<int> closed[14];
1055. 股票买卖 II - AcWing题库贪心:#include<bits/stdc++.h> using namespace std; const int N = 100010; int n; int p[N]; int main(){ cin>>n; for(int i = 0; i<=n; i++) cin>>p[i]; int res
92. 递归实现指数型枚举 - AcWing题库dfs递归,其中用到了位运算表示状态形象理解递归:借助递归搜素树#include<iostream> using namespace std; int n; //用二进制记录状态,代替数组记录 //二进制最后一位的0或1表示不同状态 void dfs(int u, int state){ if(u == n){//枚举到第n个数,
递归优化——记忆化搜索
二分、区间和并
分治
P1012 [NOIP1998 提高组] 拼数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)简洁优雅的排序:直接比较两个数组成的两个不同数#include<iostream> #include<algorithm> #include<cstring> using namespace std; //优雅比较 bool cmp(string a,
递归与递推
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号