目录
1. 两数之和
思路
代码
9. 回文数
思路
思路1
代码1
思路2
代码2
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]来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/two-sum
思路
我这个思路应该很容易懂,比较简单,看代码就能懂😁😁😁😁
代码
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
int* p = (int*)malloc(2 * sizeof(int*));//放两个数下标
*returnSize = 2;
int i = 0;
for(i = 0; i < numsSize; i++)
{
int j = 0;
for(j = i + 1; j < numsSize; j++)
{
if(nums[i] + nums[j] == target)
{
p[0] = i;
p[1] = j;
}
}
}
return p;
free(p);
p = NULL;
}
9. 回文数
这个我好好解释一下😎😎😎😎
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number
思路
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。(例如 121 这种,不多说,我们往下来)
思路就是把这个数整个调过来,画图解释
那用代码怎么实现呢
思路1
先来代码1(这是我最开始的思路)
代码1
bool isPalindrome(int x)
{
int i = 0;
int count = 0;
int sum = 0;
if (x >= 0)
{
//先确定该数有几位
int tem = x;//备份x的值之后还要用,不然之后x就得0了
while (tem > 0)
{
tem /= 10;
count++;
}
int tem2 = x;
for (i = 0; i < count; i++)
{
sum += (tem2 % 10) * pow(10, count - i - 1);
tem2 = tem2 / 10;
}
if (x == sum)
{
return true;
}
}
return false;
}
思路2
其实还是调换的思路,下面的代码更简洁,也没有多余的函数,简单来说,也是从个位开始,乘 10,相加,乘 10,相加,把后面位数的数字顶到了前面
代码2
bool isPalindrome(int x)
{
int tem = x;
long sum = 0;
while(tem > 0)
{
sum *= 10;
sum += tem % 10;
tem /= 10;
}
if(x == sum)
{
return true;
}
return false;
}
╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯完╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯