当前位置: 首页 > news >正文

网站贴子推广怎么做河北网站建设推广

网站贴子推广怎么做,河北网站建设推广,惠州市网站建设个人,云南公司网站制作马上要开始找实习了,又开始重启刷题计划了!加油冲冲冲!刷题的顺序follow代码随想录的60天刷题计划!感谢FuCosmo的总结!之前都是按照C的语法进行刷题的,这次也同样使用C。 Day 1 数组 这些题过年前都刷过了…

马上要开始找实习了,又开始重启刷题计划了!加油冲冲冲!刷题的顺序follow代码随想录的60天刷题计划!感谢FuCosmo的总结!之前都是按照C++的语法进行刷题的,这次也同样使用C++。

Day 1 数组

这些题过年前都刷过了,所以过的快一些。通过写一些题解的方式来,帮助自己回顾这些方法,记住一些核心点。

704. 二分查找

  • 训练是否取等号,这里选择的是双边都闭合的空间
  • 对于mid的计算方式,有两种mid = (left + right) / 2或者是mid = left + (left - right) / 2
class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;int mid;while (left <= right) {mid = (left + right) / 2;if (nums[mid] == target){return mid;} else if (nums[mid] < target){left = mid + 1;} else {right = mid - 1;}}return -1;}
};

27. 移除元素

  • 双指针的思想
  • 一个指针用来遍历数组中的所以元素(指向当前将要处理的元素)
  • 一个指针用来记录下一个将要赋值的位置
class Solution {
public:int removeElement(vector<int>& nums, int val) {int i = 0;int j = 0;while (i < nums.size()) {if (nums[i] != val) {nums[j] = nums[i];j++;}i++;}return j;}
};

977. 有序数组的平方

  • 暴力的解放,利用sort函数
    • 基本的语法
      • vector的创建
        • vector<int> ans;
        • vector<int> ans(n);
      • vector中添加元素
        • ans.push_back(num);
      • vector的排序
        • sort(ans.begin(), ans.end());
    • 时间复杂度是 O(nlogn),其中 n 是数组 nums的长度。
    • 空间复杂度是 O(logn),除了存储答案的数组以外,我们需要 O(logn) 的栈空间进行排序
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int i = 0;vector<int> ans;while (i < nums.size()){ans.push_back(nums[i] * nums[i]);i++;}sort(ans.begin(), ans.end());return ans;}
};
  • 双指针的解法
    • 非递减数组,元素当中存在负数
    • 第一个指针指向找到第一个大于等于0的元素
    • 如果第一个指针为0,则不需要第二个指针
    • 反之,第二个指针指向第一个元素左侧的元素
      • 比较左右指针两个元素的大小,逐个加入
      • 这里需要用到三个循环
      • 同时移动两个指针
      • 当一个指针已经移动完,则只移动单侧的指针
    • 时间复杂度是O(n)。其中 n 是数组 nums 的长度。
    • 空间复杂度是O(1)。除了存储答案的数组以外,我们只需要维护常量空间。
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int i = 0;vector<int> ans;for (int num : nums) {if (num < 0) {i++;} else {break;}}if (i == 0) {for (int num : nums) {ans.push_back(num * num);}return ans;} else {int j = i - 1;while (i < nums.size() && j >= 0) {if (nums[i] * nums[i] < nums[j] * nums[j]) {ans.push_back(nums[i] * nums[i]);i++;} else {ans.push_back(nums[j] * nums[j]);j--;}}while (i < nums.size()) {ans.push_back(nums[i] * nums[i]);i++;}while (j >= 0){ans.push_back(nums[j] * nums[j]);j--;}}return ans;}
  • 双指针的解法二
    • 一个指针指向第一个元素
    • 另一个指针指向最后一个元素
    • 从后往前加元素
    • 时间复杂度是O(n)。其中 n 是数组 nums 的长度。
    • 空间复杂度是O(1)。除了存储答案的数组以外,我们只需要维护常量空间。
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int n = nums.size();vector<int> ans(n);for (int i = 0, j = n - 1, pos = n - 1; i <= j; pos--) {if (nums[i] * nums[i] > nums[j] * nums[j]) {ans[pos] = nums[i] * nums[i];i++;} else {ans[pos] = nums[j] * nums[j];j--;}}return ans;}
};

Day 2

🚩209.长度最小的子数组

  • 双指针的思想
    • 左右两个指针,当当前区间内的值小于target,则移动右指针;反之移动左指针
    • 区间是左闭右开的
    • 利用cnt来记录最短的长度;(right - left + 1)
    • 这道题感觉是滑动窗口的思想
  • 基本语法知识
    • 三目运算符:条件表达式?True : False
    • INT的最大值:int ans = INT_MAX
// 有点冗余的写法
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left = 0;int right = left + 1;int cnt = nums[0];int n = nums.size();int minlength = n + 1;while(right < n) {if (cnt < target) {cnt += nums[right];right++;} else if (cnt >= target) {if ((right - left) < minlength) {minlength = right - left;}cnt -= nums[left];left++;}}// 当right已经走到最右端了,但cnt依旧大于0while(left < n) {if (cnt >= target) {if ((right - left) < minlength) {minlength = right - left;}cnt -= nums[left];left++;} else {break;}}return (minlength > n) ? 0 : minlength;}
};
// 看完题解后的优化代码
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left = 0;int right = 0;int cnt = 0;int n = nums.size();int minlength = n + 1;while(right < n) {cnt += nums[right];while (cnt >= target) {minlength = min(minlength, right - left + 1);cnt -= nums[left];left++;}right++;}return (minlength > n) ? 0 : minlength;}
};
  • 时间复杂度为:O(n)
  • 空间复杂度为:O(1)

Day 3 栈与队列

239. 滑动窗口最大值

  • 用一个队列来存储当前窗口内的元素,对队列中的元素进行排序,取出最大值

347.前K个高频元素

  • 使用字典,key为对应的元素,value为对应的出现次数;遍历整个数组,然后按照value进行排序,然后输出前K个结果;
  • 思想是上述的思想;但是如何根据value排序是一个难点
  • 这里用到了堆的思想,也就是优先队列的思想
  • 基本语法:
    • priority_queue的基本函数:push(), pop(), top(), empty(), size();
    • 默认为大根堆
    • 如果想要小元素放在队首,则可以使用以下的方式
      priority_queue<int,vector<int>,greater<int>>q
    • C++11中的STL 可以使用emplace()emplace_back()来代替insert()push_back()
class Solution {public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> ans;for (int num : nums) {ans[num]++;}// 排序priority_queue<pair<int, int>> q;for (auto item : ans) {q.emplace(item.second, item.first);}//求解vector<int> res;while(k) {res.emplace_back(q.top().second);q.pop();--k;}return res;}
};
http://www.zhongyajixie.com/news/36784.html

相关文章:

  • 如何帮人做网站赚钱吗怎么制作网页设计
  • 做艺术网站素材网站设计的基本原则
  • 四川做网站多少钱怎么样自己创建网站
  • 淮南网站网站建设网络舆情分析师
  • 高端网站设计公司seo优化内容
  • 网站开发毕业设计收获与体会网站查询工具
  • 深圳工业设计有限公司苏州seo推广
  • 网站建设难点最简单的营销方案
  • wordpress可以建网站吗常州seo外包
  • 南京企业建设网站设计专业软文平台
  • 网站建设优化推广杭州自建网站平台有哪些
  • 网站建设产品中心游戏推广代理平台
  • 给一个网站做了个二级域名的wap网站 百度怎么搜到的还是web网站最新国际新闻头条新闻
  • 一级a做爰片免费网站一本道精准广告投放
  • 易企秀怎么做网站商丘网站推广公司
  • 做网站运营很累吧赣州seo排名
  • 中小企业查询网站seo推广优化排名软件
  • 网站内链技巧可以进入任何网站的浏览器
  • 白云区网站建设公司seo优化方案报价
  • 校园网站建设简介全网营销与seo
  • 湛江建设厅网站信息流广告案例
  • 电子商务平台(网站)建设方式营销网站
  • 系统开发报价清单明细武汉seo公司哪家好
  • 基于.net平台网站内容管理系统研究与实现任务放单平台
  • 在哪个网站里下载的图片可以做展架广州各区正在进一步优化以下措施
  • 云主机购买关键词排名优化易下拉技巧
  • wordpress手机版如何在电脑新网站怎么做优化
  • 公司网站制作设计报价网络营销比较常用的营销模式
  • 可以做微信公众号封面的网站企业网站建设的步骤
  • 网站代码下载seo外包大型公司