小言_互联网的博客

力扣刷题(刷满1000题)

258人阅读  评论(0)

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]

算法思想:用两个for循环 然后一个if进行判断。
int *twoSum(int *nums,int numSize,int target,int *returnSize)
{
int *result=NULL;
for(int i=0;i<numSize-1;i++)
for(int j=i+1;j<numSize;j++)
{
if(nums[i]+nums[j]==target)
{
result=(int *)malloc(sizeof(int)2);
result[0]=i;
result[1]=j;
return result;
}
}
}
这里要注意返回的是
twoSum,所以我们必须得重新开辟一个数组,使之可以返回

2.给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

算法:先根据链表中的值求出来这个数的值,然后逆序输出

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
ListNode *p=l1;
ListNode *q=l2;
ListNode head=(ListNode )malloc(sizeof(ListNode));
head->next=NULL;
int sum1=0;
int sum2=0
int n=0;
while§
{
sum=sum+2

}
while(q)
{
sum2=sum2+2

}
sum=sum1+sum2;
while(sum)
{
n=sum%10;
sum=sum/10;
ListNode r=(ListNode)malloc(sizeof(ListNode));
r->data=n;
r->nex=head->next;
head->next=r;
}
return head;
}


转载:https://blog.csdn.net/jianjiange1/article/details/127953269
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场