码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 30天刷题训练(一)


    039d02b6ffae22c9b6d4306acc10292e.jpeg

    目录

    1.组队竞赛

    2.删除公共字符

    3.倒置字符串

    4.排序子序列


    1.组队竞赛

    组队竞赛_牛客笔试题_牛客网组队竞赛 ,【2017】牛客模考(三模)编程题集合https://www.nowcoder.com/questionTerminal/6736cc3ffd1444a4a0057dee89be789b?orderByHotValue=1&page=1&onlyReference=false

    ①题目及示例:

    88eaae7648fd48ac8db49a58b20818ca.png

     ②方法解析:(本题涉及到的算法是贪心算法)

    a.根据题意,涉及不能找最大,要退而求其次找第二大的数。那么我们通过关系得到,第二大的数的下标应该为array[array.length-(2*(i+1))];其中i为趟数。所以代码如下:

    1. import java.util.*;
    2. public class Main{
    3. public static void main(String[]args){
    4. Scanner sc=new Scanner(System.in);
    5. while(sc.hasNextInt()){
    6. int n=sc.nextInt();
    7. int []array= new int[3*n];
    8. for(int i=0;i<(3*n);i++){
    9. array[i]=sc.nextInt();
    10. }
    11. Arrays.sort(array);
    12. long sum=0;
    13. ; for(int i=0;i
    14. sum+=array[array.length-(2*(i+1))];
    15. }
    16. System.out.println(sum);
    17. }
    18. }
    19. }

    值得注意的几个地方:

    (1)hasNext()的用法:

    没有输入时,会对其进行阻断。即阻塞

    (2)题目中对a_i的数值要求是<10^6,但是int的大概取值范围是在10^6-10^7,所以这个地方仍然对其可以用int来进行修饰。

    b.利用去掉每组数中最小的,然后对于剩余两值找其中的较小值进行累加即可。我们排序后直接可以去掉前n个数,因为必然前n个数是最小的,然后利用下标隔开找两数中较小值即可。代码如下:

    1. import java.util.*;
    2. public class Main{
    3. public static void main(String[]args){
    4. Scanner sc=new Scanner(System.in);
    5. while(sc.hasNextInt()){
    6. int n=sc.nextInt();
    7. int []array= new int[3*n];
    8. for(int i=0;i<(3*n);i++){
    9. array[i]=sc.nextInt();
    10. }
    11. Arrays.sort(array);
    12. long sum=0;
    13. // 1、去掉前n个较小的数
    14. // 2、将剩下的 2*n 个数两两组合
    15. // 3、取每组中较小的数,求和
    16. ; for(int i=n;i2){
    17. sum+=array[i];
    18. }
    19. System.out.println(sum);
    20. }
    21. }
    22. }

    2.删除公共字符

    Python100经典练习题.pdf
    pdf 3星 超过75%的资源 4.16MB
    下载

    删除公共字符_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId=85&&tqId=29868&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking

     ①题目及示例:

    340ec1f28af0439997a674b476dbff2d.png

      ②方法解析:

    反向思考法,针对要的输出。不考虑删除,因为删除意味着重新排序,反而增加了时间复杂度。我们可以把要去除的加以记录,然后在整体中没有涉及到记录的单词就额外存在于另一个字符串中。这个时候我们采用哈希map来完成这个操作。下面是涉及到的方法。

    a.map.put(key,value);

    b.map.get(key);用于拿到key所存在的次数

    c.map.containsKey(i);布尔类型,用来判断是否存在该值

    d.s.length()方法用于求字符串的长度

    e.s.charAt(i);缩减字符串s,并返回它的第i个字符

    而下面两种方法的不同之处,在于是直接用字符串进行拼接还是构造一个StringBuffer对象,利用其append方法来进行解决。很显然,前者的开销更小,也是我们需要学到的东西。

    (1)字符串拼接代码如下:

    1. import java.util.*;
    2. public class Main{
    3. public static void main(String[]args){
    4. Scanner sc=new Scanner(System.in);
    5. String m=sc.nextLine();
    6. String n=sc.nextLine();
    7. Map map=new HashMap<>();
    8. for(int i=0;i
    9. if(map.get(n.charAt(i))==null){
    10. map.put(n.charAt(i),1);
    11. }else{
    12. map.put(n.charAt(i),map.get(n.charAt(i))+1);
    13. }
    14. }
    15. String sbu="";
    16. for(int i=0;i
    17. if(!map.containsKey(m.charAt(i))){
    18. sbu+=m.charAt(i);
    19. }
    20. }
    21. System.out.println(sbu);
    22. }
    23. }

    (2)利用StringBuilder/StringBuffer来创建对象解决:

    1. import java.util.*;
    2. public class Main{
    3. public static void main(String[]args){
    4. Scanner sc=new Scanner(System.in);
    5. String m=sc.nextLine();
    6. String n=sc.nextLine();
    7. Map map=new HashMap<>();
    8. for(int i=0;i
    9. if(map.get(n.charAt(i))==null){
    10. map.put(n.charAt(i),1);
    11. }else{
    12. map.put(n.charAt(i),map.get(n.charAt(i))+1);
    13. }
    14. }
    15. StringBuffer sbu=new StringBuffer();
    16. for(int i=0;i
    17. if(!map.containsKey(m.charAt(i))){
    18. sbu.append(m.charAt(i));
    19. }
    20. }
    21. System.out.println(sbu);
    22. }
    23. }

    3.倒置字符串

    倒置字符串_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/ee5de2e7c45a46a090c1ced2fdc62355?tpId=85&&tqId=29867&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking

     ①题目及示例:

    6c79ac132ca04ac7bd06bcdbc0adb747.png ②方法解析:

    我们分析这个字符串的整体,只是每个单词这个整体进行了倒置,而实际每个单词内部并没有进行倒置,所以我们可以有以下两种思路来进行完成本题。

    a.利用单词间是以“ ”相隔的,所以我们利用split函数,将其以单词分成整体形成一个数组,然后利用字符串拼接的方式来按照从后往前来拼接,每拼接一个单词后,加上“ ”;最后为了保证严谨,要去除句子前后的空格,使用trim方法来进行。

    代码如下:

    1. import java.util.Scanner;
    2. import java.util.Stack;
    3. public class Main{
    4. public static void main(String[] args) {
    5. Scanner sc=new Scanner(System.in);
    6. String ret=sc.nextLine();
    7. String []array=ret.split(" ");
    8. String str="";
    9. for(int i=0;i
    10. str+=array[array.length-1-i];
    11. str=str+" ";
    12. }
    13. //去除句子前后的空格,保留中间部分的空格
    14. String str1=str.toString().trim();
    15. System.out.println(str1);
    16. }
    17. }

    b.首先整体反置,再局部反置。利用双指针法来解决这个问题。注意局部逆置的时候两个变量i,j的变化位置。主要用到了一下方法。

    (1)s.toCharArray();返回数据的副本给你需要的数组,其底层是一个数组。

    a5991c64b15e46ee93edd00223cacea2.png 代码如下:

    1. import java.util.Scanner;
    2. import java.util.*;
    3. public class Main{
    4. public static void reverse(char[]array,int left,int right){
    5. while(left<=right){
    6. char tmp=array[left];
    7. array[left]=array[right];
    8. array[right]=tmp;
    9. left++;
    10. right--;
    11. }
    12. }
    13. public static void main(String[] args) {
    14. Scanner sc=new Scanner(System.in);
    15. String ret=sc.nextLine();
    16. char[] ch=ret.toCharArray();
    17. reverse(ch,0,ch.length-1);
    18. int i=0;
    19. while(i
    20. int j=i;
    21. while(j' '){
    22. j++;
    23. }
    24. if(j
    25. reverse(ch,i,j-1);
    26. i=j+1;
    27. j++;
    28. }else{
    29. reverse(ch,i,j-1);
    30. i=j;
    31. }
    32. }
    33. String str = new String(ch);
    34. System.out.println(str);
    35. }
    36. }

    4.排序子序列

    排序子序列_牛客笔试题_牛客网排序子序列 ,【2017】牛客模考(三模)编程题集合https://www.nowcoder.com/questionTerminal/2d3f6ddd82da445d804c95db22dcc471?orderByHotValue=1&page=1&onlyReference=false

    ①题目及示例:

    6ce3276785364ab88d1b78ddb2f1d067.png

     ②方法解析:

    本题主要在于对题意的理解。其中,非递增和非递减分别代表的是什么。然后就是灵活运用if和while所在的循环,值得注意的是,不满足一个条件时,是否还在另一个条件中走完才不满足,这个是很关键的点。

    代码如下:

    1. import java.util.*;
    2. public class Main {
    3. public static void main(String[]args){
    4. Scanner sc=new Scanner(System.in);
    5. int n=sc.nextInt();
    6. int []array=new int[n+1];
    7. //对数组进行赋值
    8. for(int i=0;i
    9. array[i]=sc.nextInt();
    10. }
    11. int i=0;//用i来进行移动
    12. int count=0;//用count来进行计数
    13. while(i
    14. //非递减
    15. if(array[i]1]){
    16. while(i1]){
    17. i++;//当某个i不满足时,首先跳出当前循环,然后执行完该if
    18. //中的语句后在进行之后的判断
    19. }
    20. count++;
    21. i++;
    22. }//相等的情况是不会改变前后的结果的
    23. else if(array[i]==array[i+1]){
    24. i++;
    25. }//非递增
    26. else if(array[i]>array[i+1]){
    27. while(i=array[i+1]){
    28. i++;
    29. }
    30. count++;
    31. i++;
    32. }
    33. }
    34. System.out.println(count);
    35. }
    36. }

    坚持!!!! 

     

  • 相关阅读:
    分布式(一致性协议)之领导人选举( DotNext.Net.Cluster 实现Raft 选举 )
    【ML07】Linear Regression using Scikit-Learn
    How To Install and Configure VNC Server on Ubuntu 20.04
    动态规划--区间dp
    2021CCPC威海【个人题解ADGJM】
    准备篇(三)Python 爬虫第三方库
    一分钟学会Selenium
    第0章 基础问题(2):树相关的问题(主要是二叉树)
    工业数字化转型 — 工业机器人
    人工智能学习相关笔记
  • 原文地址:https://blog.csdn.net/weixin_58850105/article/details/125958159
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号