前言
对Java开发的知识点进行深入的学习,并打算做成系列,先从基础常用的重点**(面试点)**知识开始,后续会陆续扩展,加油!
涉及到底层的可能代码块会多点,但要学习底层不看代码看啥?代码说明一切!!!放心,基本上每句代码都会写上注释。若有不对请指出!
2
2 1
Output
YES
YES
NO
Note
In the first test case it is possible to sort all the cubes in 7 exchanges.
In the second test case the cubes are already sorted.
In the third test case we can make 0 exchanges, but the cubes are not sorted yet, so the answer is “NO”.
[](()1.题意
给你一个数组,你可以每次交换相邻两个数,使得该数组单调不下降,如果你交换的次数超过 n*(n-1)/2 -1 输出YES,否则输出 NO。
[](()2.思路
这道题就是求解冒泡排序交换的次数,但你如果直接用冒泡排序去求解的话,一个样例的时间复杂度是O(n),1000个样例肯定会超时的。当一个数组严格单调下降时,即冒泡排序最坏的情况下交换次数为 n-1+n-2+n-3+…+ 2+1 即n*(n-1)/2 ,我们可以发现和题目要求的次数n*(n-1)/2 -1正好差一。因此只要数组不是严格单调下降数组都可以满足要求。
[](()3.代码
#include
#include
#include
using namespace std;
const int N = 5e4 + 10;
int a[N];
int main()
{
int T;
cin >> T;
while (T–)
{
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
int flag = 1;
for (int i = 0; i < (n-1); i++)
{
if (a[i] <= a[i + 1])
{
flag = 0;
break;
}
}
if(flag==0) puts(“YES”);
《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源
Java优秀开源项目:
- ali1024.coding.net/public/P7/Java/git
最后
面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典
- Java核心知识整理
Java核心知识
- Spring全家桶(实战系列)
- 其他电子书资料
Step3:刷题
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
[外链图片转存中…(img-Qf4KNEOG-1649394480350)]