面试题03. 数组中重复的数字
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
限制:
2 <= n <= 100000
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
int repeat;
bool flag[nums.size()]={0};
for(int i=0;i<nums.size();i++){
if(flag[nums[i]]==0)
flag[nums[i]]=1;
else
{
repeat=nums[i];
break;
}
}
return repeat;
}
};
面试题05. 替换空格
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
class Solution {
public:
string replaceSpace(string s) {
string s_end="";
for(int i =0;i<s.length();i++){
if(s[i]!=' ')
s_end+=s[i];
else
s_end+="%20";
}
return s_end;
}
};
面试题06. 从尾到头打印链表
难度简单10收藏分享切换为英文关注反馈
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
if(head!=NULL){
vector<int> a;
// 反转链表
ListNode *new_list =new ListNode(head->val);
while (head->next!= NULL)
{
head = head->next;
ListNode *before = new ListNode(head->val) ;
before->next = new_list;
new_list = before;
}
while(new_list!=NULL){
a.push_back(new_list->val);
new_list=new_list->next;
}
return a;
}
//返回空值
else return {};
}
};