移除元素
题目:
代码:
#include <cstdio>
#include <string>
#include <map>
#include <vector>
#include <stack>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int nums[n];
for(int i=0;i<n;i++){
scanf("%d,",&nums[i]);
}
int val;
scanf("%d",&val);
int j=0;
for(int i=0;i<n;i++){
if(nums[i]!=val){
nums[j] = nums[i];
j++;
}
}
printf("%d \n",j);
for(int i=0;i<j;i++){
printf("%d ",nums[i]);
}
}
搜索插入位置 要求logn
题目:
代码:
#include <cstdio>
#include <string>
#include <map>
#include <vector>
#include <stack>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int nums[n];
for(int i=0;i<n;i++){
scanf("%d,",&nums[i]);
}
int target;
scanf("%d",&target);
int left = 0;
int right = n-1;
while(left<=right){
int mid = (left+right)/2;
if(nums[mid] > target) right=mid - 1;
else if(nums[mid] < target) left=mid +1;
else {
printf("%d",mid);
return 0;
}
}
printf("%d",right+1);
return 0;
}
最后一个单词的长度
题目:
代码:
#include <cstdio>
#include <string>
#include <map>
#include <vector>
#include <stack>
using namespace std;
int main(){
char str[10001];
fgets(str,10001,stdin);
string linestr = str;
linestr.pop_back();
int index = linestr.size() -1;
while(linestr[index] ==' ') index--;
int wordLength = 0;
while(index>=0&&linestr[index]!=' '){
wordLength++;
index--;
}
printf("%d\n",wordLength);
printf("%s",linestr.substr(index+1,index+wordLength).c_str());
return 0;
}
加一
题目:
代码:
#include <cstdio>
#include <string>
#include <map>
#include <vector>
#include <stack>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int nums[n];
for(int i=0;i<n;i++){
scanf("%d,",&nums[i]);
}
for(int i=n-1;i>=0;i--){
if(nums[i]!=9){
nums[i]++;
for(int j=i+1;j<n;j++){
nums[j] = 0;
}
for(int a=0;a<n;a++){
printf("%d ",nums[a]);
}
return 0;
}
}
int ans[n+1];
ans[0] = 1;
for(int a=0;a<n;a++){
printf("%d ",ans[a]);
}
return 0;
}
二进制求和
题目:
代码
#include <cstdio>
#include <string>
#include <map>
#include <vector>
#include <stack>
using namespace std;
int main(){
char a[200];
char b[200];
scanf("%s",a);
scanf("%s",b);
string str_a = a;
string str_b = b;
int a1 = str_a.size();
int b1 = str_b.size();
while(a1<b1){
str_a = '0'+str_a;
a1++;
}
while(a1>b1){
str_b = '0'+str_b;
b1++;
}
int carry = 0;
for(int j=str_a.size()-1;j>=0;j--)
{
int sum = str_a[j] - '0' + str_b[j] + carry;
str_a[j] = (sum)%2 + '0';
carry = sum/2;
}
if(carry>0){
str_a = '1' + str_a;
}
printf("%s",str_a.c_str());
}