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

怎么用腾讯云主机建设网站网站配置域名解析

怎么用腾讯云主机建设网站,网站配置域名解析,网站运营托管,企业网络营销项目238. 除自身以外的数组乘积 第一眼就是求总乘积,然后除自身,但题目要求不能用除法; 除自身以外,就是左右两边子数组,那不就是一个前缀乘积*后缀乘积吗,逻辑就出来,前缀i-1✖后缀i1,…

238. 除自身以外的数组乘积

第一眼就是求总乘积,然后除自身,但题目要求不能用除法;
除自身以外,就是左右两边子数组,那不就是一个前缀乘积*后缀乘积吗,逻辑就出来,前缀i-1✖后缀i+1,就好了,不过注意两边极值,第一次写就是极值弄错了。

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int len = nums.size();vector<int> Lnum(len), Rnum(len);vector<int> result(len);Lnum[0] = nums[0];for(int i=1;i<len-1; i++){Lnum[i] = Lnum[i-1]*nums[i];}Rnum[len-1] = nums[len-1];for(int i=len-2; i>=0; i--)Rnum[i] = Rnum[i+1]*nums[i];for(int i=1;i<len-1;i++){result[i] = Rnum[i+1] * Lnum[i-1];}result[0] = Rnum[1];result[len-1] = Lnum[len-2];return result;}
};

41. 缺失的第一个正数

这题直接哈希了,map一下所有整数,先看有没有1,没有就直接返回1,其次遍历,找有没有比自己大1的键,就好了。

class Solution {
public:int firstMissingPositive(vector<int>& nums) {map<int,int> ma;int result = 0;for(const auto& n :nums){if(n>0 && ma.find(n)==ma.end())ma.insert(make_pair(n,1));}if(ma.find(1) == ma.end()){result = 1;return result;}for(const auto& m : ma){if(ma.find((m.first)+1) == ma.end()){result = (m.first)+1;cout<<m.first<<endl;break;}}return result;}
};

73. 矩阵置零

很容易想到,设置标志位表示原始值是不是0,然后两层for判断,是true就把行、列变为0。但实现起来怎么变为0呢,总不能再加一层for吧。纠结了半天;
其实,标志位不用设置二维,只需要确定某行、某列是否需要设置为0即可。

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {//vector<vector<bool>> flag(matrix.size(), vector<bool> (matrix[0].size(), false));vector<bool> row(matrix.size()), col(matrix[0].size());for(int i=0;i<matrix.size();i++)for(int j=0;j<matrix[0].size();j++)if(matrix[i][j] == 0)row[i] = col[j] = true;for(int i=0;i<matrix.size();i++)for(int j=0;j<matrix[0].size();j++){if(row[i] ||  col[j]){matrix[i][j] = 0;}}return;}
};

54. 螺旋矩阵

这是真考验数组边界判定的题,思路很直观,就是按照要求顺时针遍历,涉及4个边界。

class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> result;if(matrix.empty())return result;int u=0, d=matrix.size()-1, l=0, r=matrix[0].size()-1;while(true){for(int i=l;i<=r;i++)result.push_back(matrix[u][i]);if(++u>d)break;for(int i=u;i<=d;i++)result.push_back(matrix[i][r]);if(--r<l)break;for(int i=r;i>=l;i--)result.push_back(matrix[d][i]);if(--d<u)break;for(int i=d;i>=u;i--)result.push_back(matrix[i][l]);if(++l>r)break;}return result;}
};

53. 最大子数组和

两种思路,动态规划,dp[i]表示i之前的最大子数组之和,每次取+或者不+num[i]的中较大值就好。然后遍历dp,找最大值就行。代码可以优化,求dp时顺便把result也更新。

class Solution {
public:int maxSubArray(vector<int>& nums) {int pre = 0;int result = nums[0];for(const auto& x : nums){pre = max(pre+x, x);result = max(result, pre);}return result;}
};

方法二,正常数组做法,不过就是求和时判断是否为负,如果为负值,那一定会影响最大子数组的和,因此一定不是答案,就更新和为0,重新开始求和;这里也坑,第一次写,想简化逻辑,结果写扯了,写的结果是所有正数之和。。。还感觉自己逻辑没问题,排查了半天。

class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT_MIN;int add = 0;for(int i=0; i<nums.size(); i++){add += nums[i];if(add>result)result = add;if(add<0)add = 0;}return result;}
};

56. 合并区间

这题很直观,就是根据每个区间的左边界进行排序,然后依次判断即可。
第一个区间的左边界是可以确定的,所以第一个区间放进去。从第二个区间开始判断(i),如果i得左边界小于result得右边界,说明有重叠,更新back得右边界为最大值即可。如果大于,那就没重叠,把i区间放入result即可

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end());vector<vector<int>> result;result.emplace_back(intervals[0]);for(int i=1; i<intervals.size(); i++){if(result.back()[1] >= intervals[i][0])result.back()[1] = max(result.back()[1], intervals[i][1]);elseresult.emplace_back(intervals[i]);}return result;}
};

48.旋转矩阵

有点抽象了,两种方法,第一种,找出反转后得行列变换规律,matrix[row][col],在旋转后,它的新位置为 new [col][n−row−1]。两层for遍历就好;第二种方法原地反转,不借用辅助空间,顺时针旋转90=水平翻转+主对角线反转。第一次写有些难想到

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int n = matrix.size();auto matrix_new = matrix;for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {matrix_new[j][n - i - 1] = matrix[i][j];}}matrix = matrix_new;}
};

240. 搜索二维矩阵Ⅱ

直接暴力就不说了,优化的话,每行有个二分搜索吧

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for(const auto& row:matrix){auto it = lower_bound(row.begin(), row.end(), target);if(it != row.end() && *it==target)return true;}return false;}
};
http://www.dtcms.com/a/546722.html

相关文章:

  • PCIe 5.0 SSD相比PCIe 4.0,体验提升明显吗?Kingston FURY Renegade G5
  • 3.3V系统电源自动切换方案全解析:从二极管到三电源无缝切换
  • 怎样建设旅游网站重庆北碚网站制作
  • 网站代码模板免费嵌入式软件开发和c++软件开发
  • 重庆做网站建设哪家好印度搜索引擎 龙之向导
  • 如何看到网站的制作公司把wordpress变成图床
  • 泉州住房与城乡建设网站帮企业做网站赚钱吗
  • 根据三阶Bezier曲线起点到中间某点的弧长,确定该点的参数u值的方法
  • 网络用户管理系统在线优化网站
  • wordpress站点改名wordpress做社交网站
  • 网站开发协议合作台州网站制作定制
  • 最新网站建设软件搜索引擎营销的缺点
  • 4d网站广告图用什么做的多用户购物商城源码
  • 网站建设需要的公司网页升级紧急通知狼人
  • 莱芜专业做网站的深圳营销网站建设报价
  • 绿联NAS怎么部署Gitlab或Gitea?
  • 个人电脑做网站服务器网站模板网站建站哪家好
  • 色彩 导航网站九千营销工作室介绍
  • 湛江市微信网站建设企业注册资金多少有什么利弊
  • 文山网站开发wordpress 添加语言
  • 多多卡起货网站建设计算机培训班价格
  • 广州做网站系统大连高新区规划建设局网站
  • 怎么样做电影网站网站基础优化
  • 网站建设依据写一篇软文多少钱
  • 今天我们学习Linux架构keepalived实现nginx代理双击热备
  • 免费企业黄页查询网站网站开发网站定制
  • 企业宽带可以做网站吗建设银行怎么从网站上改手机号码
  • 新站秒收录接口怎么看公司网站建设的时间
  • 数字图书馆网站建设wordpress可视化divi
  • 查pv uv的网站wordpress取消自动更新