第一题:https://leetcode.cn/problems/merge-sorted-array/
将数组nums2[]的值都复制到数组nums1[]再进行排序即可。(这里我选择的是插入排序。)
另外评论区也有一种不错的方法。
第二题:https://leetcode.cn/problems/linked-list-cycle/
采用快慢指针。注意,应将快指针f指向头指针之前的一个结点,这样可以避免非环链表中f被卡住的问题。
错误示范如下:
正确示范:
第三题:
https://leetcode.cn/problems/3sum/
解题思路如下:
C++代码如下:
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>>res;
int len=nums.size(),i=0;
sort(nums.begin(),nums.end());
if(len<3||nums[0]>0)
return res;
for(i=0;i<len;i++)
{
if(nums[i]>0)
return res;
if(i>0&&nums[i]==nums[i-1])
continue;
int l=i+1,r=len-1;
while(l<r)
{
if(nums[i]+nums[l]+nums[r]==0)
{
res.push_back({nums[i],nums[l],nums[r]});
while((l<r)&&nums[l]==nums[l+1])
l++;
while((l<r)&&nums[r]==nums[r-1])
r--;
l++;
r--;
}
else if(nums[i]+nums[l]+nums[r]>0)
r--;
else
l++;
}
}
return res;
}
};
这里需要注意l++;与r--;的位置。
第四题:https://codeforces.com/problemset/problem/1684/B
思路:符号“%”为取余操作符,因此我们只需要考虑被除数比除数的整数倍多出来的部分。可将x(或y/z)的值设为a(或b/c),再根据三个等式验证x(或y/z)的值是否与所设相符。若相符,则x(或y/z)的表达式即为所求。