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

C++ For Hot100

1. 两数之和 - 力扣(LeetCode)

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> v;for(int i = 0;i<nums.size();i++){for(int j = i+1;j<nums.size();j++){if(target-nums[i]==nums[j]) {v.push_back(i);v.push_back(j);return v;}}}return v;}
};

1512. 好数对的数目 - 力扣(LeetCode)

class Solution {
public:int numIdenticalPairs(vector<int>& nums) {int j, ans = 0;int hash[101];memset(hash,0,sizeof(hash));for(j=0;j<nums.size();++j){ans += hash[nums[j]];++hash[nums[j]];}return ans;}
};

注意:这里的ans是累加的形式,也就是当前时刻的nums[j]会去和之前的配对找到相应的组数,并且加上之前的组数,因此才是ans = ans + hash[nums[j]];

709. 转换成小写字母 - 力扣(LeetCode)

tolower()

这里需要注意的是用引用,因为需要修改字符串s里面元素的值;

class Solution {
public:string toLowerCase(string s) {for(char& ch:s) ch = tolower(ch);return s;}};

258. 各位相加 - 力扣(LeetCode)

这道题指的注意的就是:int temp = num%10; sum+=num;num/=10;就可以得到num的各个位相加的数;

class Solution {
public:int addDigits(int num) {int sum;while(num>=10){sum=0;while(num){int temp=num%10;sum+=temp;num/=10;}num = sum;}return num;}
};

1281. 整数的各位积和之差 - 力扣(LeetCode)

class Solution {
public:int subtractProductAndSum(int n) {int sum = 0;int pro = 1;int ans;int arr[] ={0};while(n>0){int temp = n%10;sum += temp;pro *= temp;n /= 10;}ans = pro - sum;return ans;}
};

231. 2 的幂 - 力扣(LeetCode)

这道题有了二进制的按位与,因为如果是2的幂,减一之后两个数的按位与就是0;

class Solution {
public:bool isPowerOfTwo(int n) {return n>0 && (n&(n-1)) == 0;}
};

 867. 转置矩阵 - 力扣(LeetCode)

矩阵转置,最好创建新的vector<int,vector<int>> result(col,vector<int> (row) 二维容器就是

vector<int,vector<int>> result(col//行数,vector<int> (row) //列数);

class Solution {
public:vector<vector<int>> transpose(vector<vector<int>>& matrix) {int row = matrix.size();int col = matrix[0].size();vector<vector<int>> result(col, vector<int>(row));for(int i=0;i<row;i++){for(int j = 0;j<col;j++){result[j][i] = matrix[i][j]; // 转置操作}}return result;}
};

也就是说如果是创建二维的容器,vector<vector<int>> result(col, vector<int>(row)); 这里面的result的两个参数分别是

704. 二分查找 - 力扣(LeetCode)

class Solution {
public:int search(vector<int>& nums, int target) {int mid;int left = 0;int right = nums.size()-1;while(left <= right){mid = (left + right) / 2;if(target<nums[mid]){right = mid-1;}else if(target>nums[mid]){left = mid+1;}else{return mid;}}return -1;}
};

27. 移除元素 - 力扣(LeetCode)

class Solution {
public:int removeElement(vector<int>& nums, int val) {int slowindex = 0;if(nums.size()==0) return 0;for(int i=0;i<nums.size();i++){if(nums[i]!=val){nums[slowindex] = nums[i];slowindex++;}}return slowindex;}
};

977. 有序数组的平方 - 力扣(LeetCode)

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {for(int i =0;i<nums.size();i++){nums[i] = nums[i]*nums[i];}std::sort(nums.begin(), nums.end());return nums;}
};

第一种方法就是利用了迭代器,sort(nums.begin(),nums.end());

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> ans(nums.size());;int k=nums.size()-1;int left = 0;int right = nums.size()-1;while(left <= right){if(nums[left]*nums[left]<=nums[right]*nums[right]) {ans[k] = (nums[right] * nums[right]);right-=1;}else {ans[k] = nums[left] * nums[left];left+=1;}k--;}return ans;}
};

双指针法,就是right和left两个指针从begin和end开始找


http://www.mrgr.cn/news/77883.html

相关文章:

  • clipboard
  • python 对文件中重复的特定字符串进行替换,仅保留第4n处,输出指定文件中(本文的解决方案,即python代码,通过 文心一言的文心大模型直接生成)
  • 【2024APMCM亚太赛A题】完整参考论文与代码分享
  • springboot整合hive
  • 基于微信小程序的校园二手交易平台设计与实现,微信小程序(定制+讲解+咨询)校园二手商品在线交易系统、校园二手市场管理与推荐工具、智能化商品交易与推荐平台
  • 『VUE』33. 组件保持存活,切换组件时的生命周期(详细图文注释)
  • 机器学习周志华学习笔记-第6章<支持向量机>
  • 【C语言】连接陷阱探秘(3):形参、实参与返回值
  • flux的权重版本
  • Ubuntu下安装Qt
  • 【C++知识总结1】c++第一篇,简单了解一下命名空间是什么
  • Linux: C语言解析域名
  • 使用猴子补丁对pytorch的分布式接口进行插桩
  • 鸿蒙进阶篇-状态管理之@Prop@Link
  • 机器学习周志华学习笔记-第4章<决策树>
  • Android Framework WMS面试题及参考答案
  • YOLOv11融合[NeurlS2022]递归门控卷积gnconv模块及相关改进思路
  • 深度优先搜索(dfs)题目合集
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)
  • Python 爬虫 (1)基础 | 基础操作
  • 「Mac玩转仓颉内测版30」基础篇10 - 区间类型详解
  • springboot配置https,并使用wss
  • logback动态获取nacos配置
  • Spring 中的 ProxyFactory 创建代理对象
  • 学习Servlet (Servlet的实现方式1)
  • 英语写作中“联系、关联”associate correlate 及associated的用法