Codeforces Round #672 (Div,一个星期+4轮面试终拿下offer

本文探讨了Java编程中的冒泡排序算法,强调在面试中的重要性。通过分析冒泡排序在最坏情况下的交换次数,得出判断数组是否能通过不超过n*(n-1)/2-1次交换变得单调不降的方法。文章提供了C++实现的代码示例,并给出了部分面试题解和学习资源,包括Java核心知识和面试题库。
摘要由CSDN通过智能技术生成

前言

对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核心知识整理

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Java核心知识

  • Spring全家桶(实战系列)

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

  • 其他电子书资料

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

[外链图片转存中…(img-Qf4KNEOG-1649394480350)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值