第一行输入一个整数
表示数组的长度。
第二行输入
个整数
表示数组元素。
在一行上输出一个整数,代表最少操作次数。
4 19 7 8 25
2
对于第一组样例:
第一次操作,将
移动到末尾,数组变为
;
第二次操作,将
移动到末尾,数组变为
,此时数组严格递增。
因此答案为
。
# 解题思路: # 首先将a排序,变为b # 然后查看a中有多少是按照b中由小到大的顺序排列的 # 举例:a=[1,5,2,6,3,7,4] b=[1,2,3,4,5,6,7] # 这时a中 1 2 3 4 为按照b中由小到大排序 # 若要将a变为b,只需依次移动5 6 7 到数列的末尾 num=int(input()) a=list(map(int,input().split())) b=sorted(a) j=0 count=0 for i in range(len(a)): if a[i] == b[j]: j+=1 count+=1 print(len(b)-count)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext()){
            int n=scan.nextInt();
            int[]data=new int[n];
            for(int i=0;i<n;i++)
                data[i]=scan.nextInt();
            System.out.println(get(data));
        }
    }
    public static int get(int[]data){
        int[] copy=new int[data.length];
        System.arraycopy(data,0,copy,0,data.length);
       Arrays.sort(copy);
       int n=data.length;
       int max=0;
       int i=0;
       int j=0;
       for(;i<n&&j<n;){
           if(data[i]!=copy[j]){
               i++;
           }else{
               i++;
               j++;
           }
       }
        return n-j;
    }
}
 def solve(num): x = num.index(min(num)) stack = [num[x]] while x<len(num): if num[x]>=stack[-1]: stack.append(num[x]) x += 1 return len(num)-len(stack)+1 if __name__=='__main__': n = int(raw_input().strip()) num = list(map(int,raw_input().split())) print(solve(num))
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/**
 * @author wylu
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String[] strs = br.readLine().split(" ");
        int[] a = new int[n];
        int[] b = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(strs[i]);
            b[i] = a[i];
        }
        Arrays.sort(b);
        int count = 0;
        for (int i = 0, j = 0; i < a.length; i++) {
            if (a[i] == b[j]) {
                count++;
                j++;
            }
        }
        System.out.println(a.length - count);
    }
}
 #include <bits/stdc++.h>
using namespace std;
int main()
{
	int z;
	cin >> z;
	vector<int> v1, v2;
	while (z--)
	{
		int x;
		cin >> x;
		v1.push_back(x);
		v2.push_back(x);
	}
	sort(v2.begin(), v2.end());
	int l1 = 0, l2 = 0, index = 0;
	while (l1 < v2.size())
	{
		if (v1[l1] == v2[l2])
		{
			l1++;
			l2++;
			index++;
		}
		else l1++;
	}
	cout << v1.size() - index;
} #include<iostream> #include<vector> #include<algorithm> using namespace std; int main(){ int n; cin>>n; vector<pair<int,int>>arr; int k=0; while(n!=0){ int curnum; cin>>curnum; arr.push_back(make_pair(curnum,k++)); --n; } sort(arr.begin(),arr.end()); int count=1; while(n+1<arr.size()&&arr[n+1].second>arr[n].second){ count++; ++n; } cout<<arr.size()-count; return 0; }