
技巧
ln2037
用心雕琢我的艺术品。
展开
-
LeetCode 回文链表【递归,快慢指针】
编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?三种写法。1.把链表中的数据放到数组里求解。(这种写法不放代码了)2.递归求解。定一个指向链表起始节点的指针,然后递归遍历链表。在遍历到最后一个节点的时候和起始指针的值尽心比较。然后令指针指向下一位,返回函数返回上一层。但函数在进行调用的时候会开辟出栈帧原创 2021-06-16 18:12:27 · 152 阅读 · 0 评论 -
快速乘法
和快速幂类似。思想是把乘法转换成加法。详见代码。#include <iostream>using namespace std;int multi(int a, int b) { int res = 0;//最终值 while(b) { if(b & 1) res += a;//若当前位为1,就相加 a <<= 1;//扩大二倍 b >>= 1;//右移一位 } return res;} int main() { int原创 2021-04-12 23:37:52 · 139 阅读 · 0 评论 -
LeetCode 78. 子集【状态压缩】
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nums.length <= 10-10 <= nums[i] <= 10nums 中的所有元素 互不相同原创 2021-02-22 00:00:09 · 100 阅读 · 0 评论 -
C++字符串与整形数的转换
1.将整形数转换为字符串,可以用to_string()函数。函数原型:string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_string (unsigned long long val);string to_stri原创 2021-01-24 20:54:16 · 2501 阅读 · 0 评论 -
LeetCode 15. 三数之和 【双指针】
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]用双指针。先确定第一个数,然后定义一个l 和 r,l为第二个数,r为第三个数。起始时l在i + 1的位置,r在数组末尾。判断是否满足条件,再根据情原创 2020-12-16 22:55:54 · 106 阅读 · 0 评论 -
LeetCode 1. 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]class Solution {public: vector<int> twoSum(vector<int>原创 2020-12-16 22:46:35 · 113 阅读 · 0 评论 -
LeetCode2. 两数相加【链表】
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807我又看错题了。。以为每个链表存的数都很小,直接写了两个递归,分别把两原创 2020-12-15 18:52:55 · 131 阅读 · 0 评论 -
符号扩展
符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0.比如一个用一个8位二进制表示-1,则是10000001如果把这个书用16位二进制表示时,则为11111111 10000001 高位全都是1,这个叫做符号扩展,主要用于对其操作...转载 2020-04-23 23:04:46 · 6444 阅读 · 0 评论 -
C++ .size() 与 .length()
.size() 与 .length() 的返回值是无符号数。#include <iostream>using namespace std;int main() { string a = ""; cout << a.size() << ' ' << a.length() << endl; cout << a.siz...原创 2020-04-19 21:29:35 · 2126 阅读 · 1 评论 -
C++ string之substr()
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cmath>#include <map>using namespace std;int main() { string str = "1234...原创 2020-03-29 16:01:47 · 298 阅读 · 0 评论 -
C++ string之erase()
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cmath>#include <map>using namespace std;typedef long long ll;const int ...原创 2020-03-29 14:25:01 · 389 阅读 · 0 评论 -
D 数三角
题目描述牛牛得到了一个平面,这个平面上有 n 个不重合的点,第 i 个点的坐标为 (xi,yi)(x_i,y_i)(xi,yi)。牛牛想知道,这 n 个点形成的三角形中,总共有多少个钝角三角形。输入描述:第一行,一个正整数 n,表示点数。第二行至第 n+1 行中,第 i+1 行包含两个整数 xi,yix_i,y_ixi,yi,表示第 i 个点的坐标。保证 1≤n≤5001\le...原创 2020-02-07 23:27:08 · 172 阅读 · 2 评论 -
航班时间
题目描述小h前往美国参加了蓝桥杯国际赛。小h的女朋友发现小h上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。小h对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有12小时时差,故飞机总共需要14小时的飞行时间。不久后小h的女朋友去中东交换。小h并不知道中东与北京的时差。但是小h得到了女朋友来回航班的起降时间。小h想知...原创 2020-02-03 22:53:59 · 247 阅读 · 0 评论 -
lower_bound() 与 upper_bound()
头文件: #include <algorithm>二分查找的函数有 3 个: 参考:C++ lower_bound 和upper_boundlower_bound(起始地址,结束地址,要查找的数值) 返回的是数值 第一个 出现的位置。upper_bound(起始地址,结束地址,要查找的数值) 返回的是数值 最后一个 出现的位置。binary_search(起始地址,结束地址,要...转载 2020-01-19 13:00:04 · 206 阅读 · 0 评论