当前位置:网站首页>力扣题解
力扣题解
2022-07-30 05:46:00 【缘聚654】
1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]
题解
这是一道比较简单的题,最原始的方法就是通过双循环对数组里的每个数两两相加再进行判定,但是要注意力扣的输出格式,例如本题要求输出指针作为答案返回,所以在函数体要声明一个指针用来返回结果(不要忘记对指针分配存储空间)。由于题目说答案只有一种,所以当有符合条件的数据时,返回的数据大小为二,同时返回指针,没有符合条件时,返回的数据大小为零,同时返回NULL。且要求返回相应数据的数组下标的值,即返回双循环中i,j的值。完整代码如下:
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
for(int i=0;i<numsSize-1;i++)
{
for(int j=i+1;j<numsSize;j++)
{
if(nums[i]+nums[j]==target)
{
int* ret = malloc(sizeof(int) * 2);
ret[0] = i, ret[1] = j;
*returnSize = 2;
return ret;
}
}
}
*returnSize = 0;
return NULL;
}2.两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
题解:首先我们要先把提弄懂,开始自己看了几次都没看太懂,看了大佬们的讲解才懂得。这个题要做的就是将两个链表从尾到首的顺序组成两个十进制数字并相加然后把它们的和按照从个位到最高位的顺序存储到第三个链表中输出。
所以函数体中要实现十进制加法需要声明变量分别存储两个链表每个节点的值,每位相加之后是否进位的1以及每位的和。计算过程需要一个while循环来实现,循环条件应该是两个链表不同时为空,具体代码如下
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
int pos=0;
struct ListNode* head=NULL,*tail=NULL;
while(l1||l2){
int s1=l1!=NULL?l1->val:0;
int s2=l2!=NULL?l2->val:0;
int sum=s1+s2+pos;
if(head==NULL){
head=tail=(struct ListNode*)malloc(sizeof(struct ListNode));
tail->val=sum%10;
pos=sum/10;
tail->next=NULL;
}
else{
struct ListNode* x=(struct ListNode*)malloc(sizeof(struct ListNode));
x->val=sum%10;
pos=sum/10;
x->next=tail->next;
tail->next=x;
tail=x;
}
if(l1!=NULL)
l1=l1->next;
if(l2!=NULL)
l2=l2->next;
}
if(pos==1){
struct ListNode* x=(struct ListNode*)malloc(sizeof(struct ListNode));
x->val=pos%10;
x->next=tail->next;
tail->next=x;
tail=x;
}
return head;
}当进行到末尾但还是需要向下一位进一是,需要在链表的末尾在加一个节点来存储。
边栏推荐
- VsCode连接远程服务器并修改文件代码
- Real-time waveform display of CAN communication data based on QT (serial eight) ==== "Sub function or new class calls ui control"
- xftp的简单使用
- jvm之逃逸分析
- this的指向问题
- 超详细的PCB高可靠辨别方法
- 动态规划入门 JS
- Acwing Brush Questions Section 1
- js高级学习笔记(详细)
- This beta version of Typora is expired, please download and install a newer; workaround
猜你喜欢

多层板的层数,为啥选项都是偶数?就不能选奇数?

QT serial and CAN dynamic real-time display the log data

C语言,库函数中qsort的用法,及解释

QT Weekly Skills (1) ~~~~~~~~~ Running Icon

探究make_shared效率

CPU缓存一致性问题

QT serial 4: LORA test platform based on QT and STM32H750 (3)

使用Dva项目作Antd的Demo
![[Common usage of markdown]](/img/4b/3cb17b1dafe095e2f45510b41186fd.png)
[Common usage of markdown]

FPGA parsing B code----serial 2
随机推荐
实现二叉树--实现删除
ES6 syntax notes (ES6~ES11)
HSPF model application
i++与 ++i 的区别
《C陷阱和缺陷》void (*signal(int , void(*)(int)))(int)的深刻解读
openssl 1.1.1编译语句
pdf和word等文档添加水印
华秋第八届硬创大赛携手NVIDIA初创加速计划,赋能企业发展
CPU缓存一致性问题
测试题第三个
高交会重要活动之一|2020中国硬件创新大赛全国总决赛
IEEE在指定期刊下搜索相关论文
ES6语法笔记(ES6~ES11)
动态规划进阶 JS
this的指向问题
QT serial port dynamically displays a large number of data waveform curves in real time (5) ======== "Final perfect solution version"
JS的值和引用,复制和传递
[Punctuality Atom] Learning and use of IIC (unfinished...)
Machine Learning, Deep Learning Based on MATLAB 2021b
Kunlun State Screen Production (Serialization 5) --- Basics (serial port reception, text and light display)