- 博客(92)
- 收藏
- 关注
原创 论 $*、$@、“$*“、“$@“的区别
https://blog.csdn.net/XquanZeng/article/details/90510992
2023-05-31 10:04:44 143
原创 leetcode 141. 环形链表
官解class Solution {public: int num = 0; int pos; bool hasCycle(ListNode *head) { if(head == nullptr || head->next == nullptr) return false; ListNode *fast = head->next,*low = head; while(fast != low){
2020-12-18 17:30:13 79 1
原创 牛客小白月赛29
题目#include <bits/stdc++.h>using namespace std;int op[500005], a[500005];int main(){ int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d%d", &op[i], &a[i]); int and1 = (1 << 20) - 1, xor1 = 0
2020-12-16 19:25:43 124
原创 牛客小白月赛28 D
题目#include<bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); long long x,y; for(int i = 0; i < t; i++){ scanf("%lld%lld",&x,&y); if(x < 2*y || (y & (x - 2 * y))) pri
2020-12-16 19:24:33 112 1
原创 leetcode 136. 只出现一次的数字
官解class Solution {public: int sum; int singleNumber(vector<int>& nums) { sum = nums[0]; for(int i = 1; i < nums.size(); i++){ sum ^= nums[i]; } return sum; }};
2020-12-16 19:16:57 61
原创 122. 买卖股票的最佳时机 II(贪心,dp)
官解class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); int ans = 0; for(int i = 1; i < n; i++){ ans += prices[i] - prices[i - 1] > 0 ? prices[i] - prices[i - 1] : 0;
2020-12-15 13:49:53 67
原创 leetcode 89格雷编码
官解class Solution {public: vector<int> grayCode(int n){ vector<int> v; v.push_back(0); int head = 1; for(int i = 0; i < n; i++){ for(int j = v.size() - 1; j >= 0; j--){ v.pu
2020-12-09 16:04:08 96
原创 leetcode 687最长同值路径
树的最长路径代表的意思是树的两个结点之间的边的条数,刚开始我理解错题目的意思了,以为求的是最多联通的结点数。比如说这组数据:[1,null,1,1,1,1,1,1,null,1]它的最长路径见下图:class Solution {public: int ans = 0; int longestUnivaluePath(TreeNode* root) { solve(root); return ans; } int solv
2020-12-09 00:14:08 133
原创 返回所有的最长回文子串(O(n))
用马拉车算法将回文半径p[i]求出来,回文字串的长度就是p[i]-1,起始的下标就是(i - p[i])/2,遍历一次p[i]数组将所有最大长度的字符串存到vector就可以了。#include<bits/stdc++.h>using namespace std;string solve(string s,vector<string> &v){ string news = "$#"; for(int i = 0;i < s.length();
2020-12-08 00:32:08 193
原创 leetcode78子集
官解 vector<vector<int>> v; vector<int> t; void dfs(vector<int> &nums,int i){ if(i == nums.size()){ v.push_back(t); return ; } t.push_back(nums[i]);
2020-12-07 22:06:59 62
原创 leetcode 61 旋转链表
class Solution {public: ListNode* rotateRight(ListNode* head, int k) { if(head == nullptr) return nullptr; if(k == 0) return head; ListNode *s = new ListNode(-1); ListNode *p = head; int len = 1; while(p
2020-12-07 18:06:35 60
原创 leetcode 59 螺旋矩阵2
class Solution {public: vector<vector<int>> generateMatrix(int n) { if(n == 0) return {}; vector<vector<int>> v(n,vector<int>(n,0)); int up = 0,right = n - 1,down = n - 1,left = 0; int size
2020-12-07 18:06:04 64
原创 leetcode 59 螺旋矩阵2
class Solution {public: vector<vector<int>> generateMatrix(int n) { if(n == 0) return {}; vector<vector<int>> v(n,vector<int>(n,0)); int up = 0,right = n - 1,down = n - 1,left = 0; int size
2020-12-07 16:37:41 82
原创 leetcode 54 螺旋矩阵
vector<int> spiralOrder(vector<vector<int>>& matrix) { if(matrix.size() == 0) return {}; vector<int> v; int x = -1,y = 0; int mx = matrix[0].size(); int my = matrix.size(); int...
2020-12-07 15:42:04 71
原创 leetcode 53 最大字段和
class Solution {public: int maxSubArray(vector<int>& nums) { int pre = 0,max1 = INT_MIN; for(auto &x: nums){ pre = max(x,pre + x);//只取x大还是把前面的最大值也加起来大 max1 = max(max1,pre);
2020-12-07 14:15:49 78
原创 leetcode 46全排列
官解class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> v; dfs(v,nums,0,nums.size()); return v; } void dfs(vector<vector<int&g
2020-12-07 13:10:21 67
原创 leetcode 43 字符串相乘
官解string multiply(string num1, string num2) { if(num1 == "0" || num2 == "0") return "0"; int l1 = num1.size(),l2 = num2.size(); vector<int> v(l1 + l2,0); for(int i = l1 - 1; i >= 0; i--){ int a = num1[i] - '0';
2020-12-07 00:45:48 104
原创 leetcode 33 搜索旋转排序数组
官解我们将数组从中间分开成左右两部分的时候,一定有一部分的数组是有序的。可以对有序的部分二分class Solution {public: int search(vector<int>& nums, int target) { int n = nums.size(); int l = 0,r = n - 1,mid; while(l <= r){ mid = (l + r) >&
2020-12-06 01:26:18 137
原创 leetcode 23 合并K个有序链表
class Solution {public: ListNode* mergeKLists(vector<ListNode*>& lists) { if(lists.size() == 0) return nullptr; ListNode *temp = nullptr; for(int i = 0; i < lists.size(); i++) temp = mergeTwoLists(temp,lists[i]);
2020-12-05 22:39:56 77
原创 leetcode 21 合并两个有序链表
官解class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *prehead = new ListNode(-1); ListNode *pre = prehead; if(l1 == nullptr) return l2; if(l2 == nullptr) return l1; while(l1
2020-12-05 00:56:39 126
原创 判断一个点是否在矩形里面
利用叉乘的性质,已知矩形ABCD,通过判断(AB×AP)*(CD×CP) >= 0可以判断出P点是否在AB和CD两条直线之间,同理可知是否在AD和BC之间二维叉乘公式即二阶行列式:x1y2-x2y1;#include<bits/stdc++.h>using namespace std;struct point{ int x; int y;};int getcross(point a,point b,point p){ return (b.x - a.
2020-12-04 23:26:52 1246
原创 leetcode 16 最接近三数之和
官解class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int size = nums.size(); sort(nums.begin(),nums.end()); int best = 0x3fffffff; auto update = [&](int sum){ if(abs(
2020-12-04 19:59:23 87
原创 二维vector迭代器访问以及初始化的问题
初始化:vector<vector<int> > v(100, vector<int>(100,0));vector<vector<int> > v;注意:不能通过下标访问,因为刚开始里面没有元素v.push_back(1);printf("%d",v[0]);//正确vector<int> v(100,0));printf("%d",v[0]);//正确 // vector<vector<int&g
2020-12-04 16:30:49 426
原创 leetcode 15 三数之和
官解 vector<vector<int>> threeSum(vector<int>& nums) { int size = nums.size(); vector<vector<int> > v; sort(nums.begin(),nums.end()); for(int i = 0; i < size; i++){ int k = siz
2020-12-04 16:20:38 61
原创 leetcode 1两数之和
官解class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> hashtable; for (int i = 0; i < nums.size(); ++i) { auto it = hashtable.find(target - nums[i]);
2020-12-04 15:38:50 137 1
原创 leetcode 14 最长公共前缀
官解class Solution {public: string longestCommonPrefix(vector<string>& strs) { if (!strs.size()) { return ""; } int length = strs[0].size(); int count = strs.size(); for (int i = 0; i < l
2020-12-04 15:15:34 282
原创 leetcode 11 盛最多水的容器
class Solution {public: int maxArea(vector<int>& height) { int l = 0, r = height.size() - 1; int ans = 0; while (l < r) { int area = min(height[l], height[r]) * (r - l); ans = max(ans, area)
2020-12-04 14:10:40 62
原创 leetcode 9 回文数
官解class Solution{public: bool isPalindrome(int x) { bool result; if (x < 0) { return false; } stringstream ss; ss << x; string str, reversedStr; ss >> str
2020-12-04 14:06:19 56
原创 leetcode 7 整数反转
官解:class Solution {public: int reverse(int x) { int rev = 0; while (x != 0) { int pop = x % 10; x /= 10; if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;
2020-12-04 14:01:40 59
原创 leetcode 8 字符串转换整数 (atoi)
官解刚开始理解错题目的意思了,越做到后面越乱,基本上把这道题的坑都踩了,还好人还在。思路:(1)先找到第一个合法的字符,ind注意初始化一定也要是-1,如果不是-1,当输入空字符串的时候会有问题.(2)把连续的数字拼接成一个新的字符串(3)计算这个字符串的值,注意不能先把值计算出来再去添加符号,那样在计算的时候可能就越界了。#include<bits/stdc++.h>using namespace std; int myAtoi(string s) { string s
2020-12-01 23:12:52 140
原创 函数重载时的const(函数前,参数前,函数后)
bool operator < (const node &a,const node &b) { return a.id > b.id;}加引用是为了防止对象之间的复制,节省内存开销,提高程序运行效率。加const是为了不让被调用函数改变传递给它的参数的对象的值。并且加上const会使得函数调用更灵活(能够处理const和非const对象,否则只能接受非const数据)const bool operator < (node &a,node &b
2020-12-01 20:13:18 310
原创 leetcode 4 寻找两个正序数组的中位数
官解class Solution {public: int getKthElement(const vector<int>& nums1, const vector<int>& nums2, int k) { /* 主要思路:要找到第 k (k>1) 小的元素,那么就取 pivot1 = nums1[k/2-1] 和 pivot2 = nums2[k/2-1] 进行比较 * 这里的 "/" 表示整除
2020-12-01 17:08:29 207
原创 快手2020校园招聘秋招笔试--工程C试卷(21题)滑动窗口解决字串
病毒检测时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M小明最近在做病毒自动检测,他发现,在某些library 的代码段的二进制表示中,如果包含子串并且恰好有k个1,就有可能有潜在的病毒。library的二进制表示可能很大,并且子串可能很多,人工分析不可能,于是他想写个程序来先算算到底有多少个子串满足条件。如果子串内容相同,但是开始或者结束位置不一样,则被认为是不同的子串。注:子串一定是连续的。例如"010"有6个子串,分别是 "0, “1”, “0”, “01”
2020-12-01 14:45:28 155
原创 letcode 2两数相加
官解class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *head = nullptr,*tail = nullptr; int carry = 0; while(l1 || l2){ int n1 = l1 != nullptr ? l1->val:0; int n2 =
2020-11-30 23:56:40 77
原创 leetcode 767重构字符串
#include<bits/stdc++.h>using namespace std;class Solution {public: string reorganizeString(string S) { int len = S.length(); if(len < 2) return ""; else{ vector<int> v(26,0); int maxcount = -
2020-11-30 21:22:28 80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人