C/C++每日一练(20230324)
目录
1. 搜索旋转排序数组 🌟🌟
1. 搜索旋转排序数组
整数数组 nums
按升序排列,数组中的值 互不相同 。
在传递给函数之前,nums
在预先未知的某个下标 k
(0 <= k < nums.length
)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]
(下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7]
在下标 3
处经旋转后可能变为 [4,5,6,7,0,1,2]
。
给你 旋转后 的数组 nums
和一个整数 target
,如果 nums
中存在这个目标值 target
,则返回它的下标,否则返回 -1
。
示例 1:
输入:nums = [4,5,6,7,0,1,2], target = 0 输出:4
示例 2:
输入:nums = [4,5,6,7,0,1,2], target = 3 输出:-1
示例 3:
输入:nums = [1], target = 0 输出:-1
提示:
1 <= nums.length <= 5000
-10^4 <= nums[i] <= 10^4
nums
中的每个值都 独一无二- 题目数据保证
nums
在预先未知的某个下标上进行了旋转 -10^4 <= target <= 10^4
进阶:你可以设计一个时间复杂度为 O(log n)
的解决方案吗?
出处:
https://edu.csdn.net/practice/23630838
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
int search(vector<int> &nums, int target)
{
int lo = 0;
int hi = nums.size() - 1;
while (lo <= hi)
{
int mid = lo + (hi - lo) / 2;
if (nums[mid] == target)
{
return mid;
}
if (nums[lo] <= nums[mid])
{
if (nums[lo] <= target && target < nums[mid])
{
hi = mid - 1;
}
else
{
lo = mid + 1;
}
}
else
{
if (nums[mid] < target && target <= nums[hi])
{
lo = mid + 1;
}
else
{
hi = mid - 1;
}
}
}
return -1;
}
};
int main()
{
Solution s;
vector<int> nums = {4,5,6,7,0,1,2};
cout << s.search(nums, 0) << endl;
nums = {4,5,6,7,0,1,2};
cout << s.search(nums, 3) << endl;
return 0;
}
输出:
4
-1
2. 字符串中出现最多的字母
一个字符串(string)里出现的次数最多的称为幸运字符。例如,在字符串abbccc中,c 出现的次数最多,所以这个幸运字符就是 c 啦!
Input 第一行是测试数据的组数n,接下来的每组测试数据占一行,每行数据不超过1000个字符且非空。 字符串里只含小写字母。
Output 每组数据对应输出一行,包括出现次数最多的字符和该字符出现的次数,中间是一个空格。如果有多个字符出现的次数相同且最多,那么输出ASCII码最小的那一个字符。
Sample Input
2
abbccc
adfadffasdf
Sample Output
c 3 f 4
出处:
https://edu.csdn.net/practice/23630839
代码:
#include <string.h>
#include"stdio.h"
int main(void)
{
int n,i, z[26], max, xia;
char c[1050], ch;
scanf("%d",&n);
while(n>0)
{
n--;
scanf("%s", c);
for(i=0; i<26; i++)
z[i]=0;
xia=strlen(c);
for(i=0; i<xia; i++)
z[c[i]-'a']++;
max=z[0]; xia=0;
for(i=1; i<=25; i++)
if(z[i]>max){
max=z[i];
xia=i;
}
ch='a'+xia;
printf("%c %d\n", ch, max);
}
return 0;
}
输入输出:
2
abbccc
c 3
adfadffasdf
f 4
3. 从指定位置插入字符串
编写程序,输入字符串S1和S2以及插入位置n,在字符串S1中的指定位置n处插入字符串S2。
例如,输入“jiangsu”、“123”和位置3,则输出“ji123angsu”。
出处:
https://edu.csdn.net/practice/23630840
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1;
string str2;
int pos;
do
{
if ((cin >> str1 >> str2 >> pos) && (pos >= 1))
{
str1.insert(pos - 1, str2);
cout << str1 << endl;
}
else
{
cout << "Invalid Input" << endl;
break;
}
} while (false);
return 0;
}
输出:
jiangsu
123
3
ji123angsu
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
Golang每日一练 专栏 | |
Python每日一练 专栏 | |
C/C++每日一练 专栏 | |
Java每日一练 专栏 |
相关文章
- Win10系列:VC++媒体播放控制3
- 在MDK上建立一个C++的STM32开发工程
- C/C++每日一练(20230407)
- C/C++每日一练(20230406)
- C/C++每日一练(20230331)
- C/C++每日一练(20230322)
- C/C++每日一练(20230319)
- C/C++每日一练(20230221)
- C/C++每日一练(20230315)
- C/C++每日一练(20230313)
- C语言/C++常见习题问答集锦(七)
- [C++ 面试基础知识总结] 顺序容器
- 【C++】位操作的应用
- C++每日面试之构造顺顺序
- C++每日面试之求数组的众数
- C++每日扎心结构体之初始化导致的一次异常崩溃。
- C++每日面试之decltype(转)
- 大话设计模式C++版——装饰模式
- C/C++开发工具大比拼【转】
- C++ Primer 学习笔记_95_用于大型程序的工具 --多重继承与虚继承
- NDK设置C++编译器版本号
- 使用C++17编译时出错:error C2872: 'byte': ambiguous symbol
- 官宣:VS Code C++扩展1.0可用
- 【高级C】GNU C/C++ 内联汇编编程指南全集
- c++stl之反向迭代器用法及注意事项!!!
- 第十三届蓝桥杯B组C++(试题A:九进制转十进制)