力扣算法题(C++):1、2

1、两数之和等于目标值(两次不能取同一个数)

classSolution {

public:

//声明返回值类型:vector<int>以及传入参数:nums、target ;vector<int> res; 声明返回参数

vector<int> twoSum(vector<int>&nums, int target) {

for(int i=0;i<nums.size();i++) // 循环第一个数

{

for(int j=i+1;j<nums.size();j++) // 循环第二个数,i+1防止重复,效率更高

{

if(numsi+numsj==target) //判断是否符合条件

{

res.push_back(i); //向返回参数内写入返回值

res.push_back(j); //向返回参数内写入返回值

return res; //返回返回参数值

}

}

}

return res; //返回返回参数值(必须有)

}

};

2、两数相加

classSolution {

public:

ListNode*addTwoNumbers(ListNode*l1, ListNode*l2) { //定义返回参数类型以及传入参数

ListNode* head = new ListNode(0);

ListNode* tail = head;

int carry = 0; //进位部分

int reminds = 0; // 余数部分

int val1 = 0; //链表1的值

int val2 = 0; //链表2的值

int sums = 0; //链表1的值+链表2的值+进位部分

while (l1 != nullptr || l2 != nullptr || carry != 0) { //链表不为空或有进位即循环

val1 = l1 ? l1->val : 0; //取链表1的值

val2 = l2 ? l2->val : 0; //取链表2的值

sums = val1 + val2 + carry; //取链表1的值+链表2的值+进位部分

carry = sums / 10; // 进位部分

reminds = sums % 10; //余数部分

tail->next = newListNode(reminds); //给尾部赋值

tail = tail->next; //给尾部添加新的节点

if (l1 != nullptr) {

l1 = l1->next; //依次获取l1的下一个节点的值

}

if (l2 != nullptr) {

l2 = l2->next; //依次获取l2的下一个节点的值

}

}

ListNode* result = head->next; //返回真正的头节点

delete head; // 释放初始化的节点内存

return result; //返回计算结果

}

};

相关推荐
青少儿编程课堂10 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:分层图最短路解析
c++·python·算法·bfs·信息学竞赛
YSL07012411 小时前
一文通关-----排序
数据结构·算法
天河归来20 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL21 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
ZhengEnCi21 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考21 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
砚底藏山河1 天前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
猿究院_夏燊1 天前
MySQL 的四种隔离级别
java·数据库·mysql
码流子1 天前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
霸道流氓气质1 天前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring