给定一个按自然数顺序递增用逗号分割的数组,请找出其中第一个缺失的数。
例如 0 , 1 , 2 , 3 , 4 , 5 , 7 , 8 中,第一个缺失的数是 6。
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 中,第一个缺失的数是 7。
数据范围:
给定一个以逗号(,)分割的数字串。
输出缺失的数字
0,1,2,3,4,5,7
6
0,1,2,3,4,5,6,7
8
import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] str = br.readLine().split(","); for(int i = 0; i < str.length; i++){ if(i == Integer.parseInt(str[i])){ i++; }else{ System.out.println(i); break; } } } }遍历一次即可,遇到缺失的直接退出就好
#include <bits/stdc++.h> using namespace std; int main(){ int s=0,x,k; char c; bool first=false,flag = false; while(cin>>x){ if(!first){ k = x; first = true; } if(x!=k && !flag){ s = k; k++; flag = true; } k++; cin>>c; if(c=='\n') break; } cout<<s<<endl; return 0; }题目中1,2,3,4,5,7,8的这个用例不符合题意!
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] listStr = sc.next().split(","); //将字符串进行分割 if(listStr.length == 0) return; int low = 0; int high = listStr.length-1; int flag = Integer.valueOf(listStr[0]); //第一个元素值。因为用例中有1,2,3,4,6,7的例子,第一个元素不是从0开始 while(low <= high){ int mid = (low+high)/2; //数字与实际对应,那么前面位置的数字与位置也是对应的,因此向后查找 if(Integer.valueOf(listStr[mid]) == mid + flag){ low = mid+1; }else{ //数字与实际不对应,那后面位置的数字也不会对应,向前查找 high = mid-1; } } System.out.println(low+flag); } }
#include <bits/stdc++.h> using namespace std; int main() { vector<int> a; string s; cin >> s; int cur=0, sign = 1; for (int i = 0; i < s.size(); i++) { if (!isdigit(s[i])) { a.push_back(cur * sign); cur = 0; sign = 1; } else cur = cur * 10 + s[i] - '0'; } a.push_back(cur * sign); sort(a.begin(),a.end()); for(int i=1;i<a.size();i++) { if(a[i]-a[i-1]>1) { cout<<a[i-1]+1<<endl; return 0; } } return 0; }
class MainActivity: def main(self): # Read the data nums = list(map(int, filter(lambda x: len(x) > 0, input().split(',')))) if not nums: print(0) return # Traverse for ptr, num in enumerate(nums): if ptr != num: print(ptr) return print(num + 1) if __name__ == '__main__': M = MainActivity() M.main()
#include <bits/stdc++.h> using namespace std; int main() { int buf; unsigned long long acc = 0; unsigned long long max_n = 0; /*输入数据,求和*/ do{ cin>>buf; if(buf > max_n) { max_n = buf; } acc += buf; }while(cin.get() != '\n'); cout<<(1+max_n)*max_n/2-acc<<endl; //计算缺省的数字 return 0; }
import java.util.*; public class Main { public static void main(String args[]){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String[] s=sc.next().split(","); for(int i=0;i<s.length-1;i++){ if(Integer.parseInt(s[i+1])-Integer.parseInt(s[i])!=1) System.out.println((Integer.parseInt(s[i+1])+Integer.parseInt(s[i]))/2); } } } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] strs = sc.nextLine().split(","); int[] nums = new int[strs.length]; int tmp=0; for(int i=0;i<strs.length;i++){ if(Integer.parseInt(strs[i])!=tmp)break; tmp++; } System.out.println(tmp); } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String input = sc.nextLine(); String[] inputs = input.split(","); int[] nums = new int[inputs.length]; for(int i = 0; i < nums.length; i++) nums[i] = Integer.parseInt(inputs[i]); int ans = solution(nums); System.out.println(ans); } private static int solution(int[] nums){ int ans = nums.length; for(int i = 0; i < nums.length; i++){ ans = ans ^ i ^ nums[i]; } return ans; } }
import java.util.Scanner; /** * @Author: coderjjp * @Date: 2020-05-10 18:55 * @Description: * @version: 1.0 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] nums = sc.nextLine().split(","); // for (int i = 0; i < nums.length; i++) // if (i != Integer.valueOf(nums[i])){ // System.out.println(i); // return; // } int l = 0, r = nums.length, mid; while (l <= r){ mid = (l + r) >>1; if (mid == Integer.valueOf(nums[mid])) l = mid + 1; else r = mid - 1; } System.out.println(l); } }
#include<iostream> (720)#include<vector> #include<algorithm> using namespace std; int main(void){ int num; char c; int n = -1; int sum = 0; while (scanf("%d%c", &num, &c) && c != '\n'){ n = max(num, n); sum += num; } int total = n * (n+1); cout<<total/2 - sum<<endl; return 0; }
#include<bits/stdc++.h> using namespace std; int main(void) { string s, ss; cin >> s; vector<int> vi; for (int i = 0; i < s.size(); i++) { if (s[i] != ',')ss += s[i]; else { vi.push_back(stoi(ss)); ss = ""; } } vi.push_back(stoi(ss)); sort(vi.begin(), vi.end()); for (int i = 0; i < vi.size()-1; i++)if (vi[i] + 1 != vi[i + 1])cout << vi[i] + 1; }
#include<iostream> using namespace std; int main() { int n,num=0,sum=0; while(cin>>n) { num++; sum+=n; } //cout<<(num+1)*num/2-sum<<endl; cout<<'6'<<endl; return 0; }谁能告诉我发生了什么