笔试强训(12)

news2024/11/17 19:38:24

算法题1:计算日期到天数转换:

我们假设用例输入的是2022 1 1,那么我们对应的天数就是1天,我们就不应该在输出1月份的所有月数

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int year=scanner.nextInt();
        int month=scanner.nextInt();
        int day=scanner.nextInt();
//我们把1到12月份数字全部进行用数组保存起来
   int[] array=new int[]{31,29,31,30,31,30,31,31,30,31,30,31};
   int sum=0;
   for(int i=1;i<month;i++){
//对于闰年年份我们要进行特殊处理
        if(i==2){
           if((year%4==0&&year%100!=0)||(year%400==0)){
                sum=sum+array[i-1];
                continue;
            }else{
               sum=sum+28;
                continue;
            }
        }
        sum=sum+array[i-1];
   }
//最后我们要特殊进行处理天数
   sum=sum+day;
   System.out.println(sum);
    }
}      

算法题2:幸运的袋子幸运的袋子_牛客题霸_牛客网

题目描述:我们假设一个袋子里面有N个球,每一个球上面都有一个号码(拥有相同号码的球是没有区别的),如果说一个袋子是幸运的,那么当且仅当所有的球的号码的和大于所有球的号码的积,比如说袋子里面的球的号码是{1,1,2,3},那么这个袋子就是幸运的,因为1+1+2+3>1*1*2*3

你可以适当的从袋子里面移除一些球,可以移除0个,但是不要移除完,我们要使移除完之后的袋子是幸运的,请你现在通过编程计算一下你可以获得多少种不同的幸运的袋子

思路:

1)我们先将袋子中的球来进行排序

2)当我们的一个号码和前面的号码无法组成一个幸运的袋子,那么就直接break,因为后面的号码肯定比前面的号码大,也无法构成幸运的袋子

3)当我们返回上层的递归的时候,需要进行回溯,需要继续进行判断前面的号码和当前位置后面的号码是否可以构成幸运的袋子

特殊情况:a[i]==1,1和任何数的和都是大于1和任何数的积

注意题目中已经说了相同号码的球是没有区别的

import java.util.*;
public class Main {
    public static void main(String[] args) {
       Scanner scanner=new Scanner(System.in);
       while(scanner.hasNextInt()){
       int n=scanner.nextInt();
       int[] array=new int[n];
       for(int i=0;i<n;i++){
        array[i]=scanner.nextInt();
       }
        Arrays.sort(array);
    System.out.println(Count(array,n,0,0,1));
       }
    }
public static int Count(int[] array,int len,int pos,int sum,int mult){
          int count=0;
          for(int i=pos;i<len;i++){
                sum=sum+array[i];
                mult=mult*array[i];
                if(sum>mult){
                   count=count+1+Count(array,len,i+1,sum,mult);
                }else if(array[i]==1){
                        count+=Count(array,len,i+1,sum,mult);
                }else{
                        break;
                }
//向上进行回溯的时候sum进行减减操作,mult进行除以这个array[i]
                sum=sum-array[i];
                mult=mult/array[i];
                while(i<len-1&&array[i]==array[i+1]){
                        i++;
                }
          }
          return count;
  }
}

算法题三:无重复字符串的最长子串

思路:

1)我们使用一个数据结构叫做HashSet来进行保存遍历到的每一个字符串

2)我们进行定义两个指针,left和right,我们在让right向后移动的过程中,把right遍历到的每一个字符串放到HashSet集合里面,如果说我们的right下标在进行向后++的过程中发现,此时right的下表的元素里面在HashSet中已经存在,说明此时一定在left到right的这一下标范围内遇到了重复的字符

3)如果说我们最终遇到了重复的字符,那么我们right下标的字符就没有办法放到hashSet集合里面了,此时我们就应该left向后进行移动,删除对应的left的元素,直到把把对应的hashSet中的集合元素中包含的right下标的元素进行删除即可

class Solution {
    public int lengthOfLongestSubstring(String s) {
        if(s==null||s.equals("")){
            return 0;
        }
     char[] array=s.toCharArray();
     int left=0;
     int right=0;
     int length=0;
     int MaxLength=0;
     HashSet<Character> result=new HashSet<>();
     while(right<array.length){
         if(right<array.length&&!result.contains(array[right])){
             result.add(array[right]);
             right++;
             length++;
             if(length>MaxLength){
                 MaxLength=length;
             }
         }
         if(right<array.length&&result.contains(array[right])){
             while(left<array.length&&result.contains(array[right])){
                 result.remove(array[left]);
                 left++;
                 length--;
             }
             result.add(array[right]);
             right++;
             length++;
         }
     }
     return MaxLength;

    }
}

算法题4:寻找两个升序数组的中位数

思路:我们可以先合并两个有序数组,然后直接就可以找出中位数

class Solution {
//1.我们先写两个函数进行合并两个有序数组
    public int[] mergeSort(int[] arr1,int[] arr2){
        int s1=0;
        int e1=arr1.length-1;
        int s2=0;
        int e2=arr2.length-1;
        int array[]=new int[arr1.length+arr2.length];
        int k=0;
        while(s1<=e1&&s2<=e2){
            if(arr1[s1]<=arr2[s2]){
                array[k]=arr1[s1];
                k++;
                s1++;
            }else{
                array[k]=arr2[s2];
                s2++;
                k++;
            }
        }
        while(s1<=e1){
            array[k++]=arr1[s1++];
        }
        while(s2<=e2){
            array[k++]=arr2[s2++];
        }
        return array;
    }
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
    int[] array=mergeSort(nums1,nums2);
//2.进行合并两个有序数组之后进行寻找中位数并进行返回
        if(array.length%2==1){
            return array[array.length/2];
        }else{
            return (array[array.length/2]+array[(array.length/2)-1])/2.0;
        }


    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【uniapp小程序】上传图片

文章目录&#x1f34d;前言&#x1f34b;正文1、首先看官网uni.chooseImage(OBJECT) API 介绍2、案例代码演示3、效果展示&#x1f383;专栏分享&#xff1a;&#x1f34d;前言 本篇文章我们研究一下&#xff0c;在移动端开发过程中经常使用到的图片上传功能。在大多数小程序或…

ArcGIS基础实验操作100例--实验68注记符号化表达

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验68 注记符号化表达 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&am…

C语言入门(四)——分支语句

if语句 if/else语句 布尔代数 switch语句 if语句 目前我们写的简单函数中可以有多条语句&#xff0c;但这些语句总是从前到后顺序执行的。除了顺序执行之 外&#xff0c;有时候我们需要检查一个条件&#xff0c;然后根据检查的结果执行不同的后续代码&#xff0c;在C语言中可…

ResNet精读笔记(1)

introduction部分提出了几个问题 1.构建一个好的网络 &#xff1f; 把层堆起来吗 哈哈 跟堆汉堡一样 这里呢 我们都知道 当网络的层数变多之后 加深了 deep了 但是 就会带来 梯度消失或者爆炸的问题 这里 实在找不到好的图 本质上因为当层数多了之后 反向传播的计算里面是…

嵌入式:万字详解通信接口设计

文章目录UART接口UART的工作原理UART的功能和组成S3C2410A的UARTUART 操作&#xff08;1&#xff09;数据发送&#xff08;2&#xff09;数据接收&#xff08;3&#xff09;自动流控制&#xff08;4&#xff09;非自动流控制&#xff08;a&#xff09;接收数据操作&#xff08;…

【C++】模拟实现List的正向和反向迭代器(iterator、reverse_iterator)

文章目录1、搭建List的基本框架2、List中iterator和const_iterator3、反向迭代器revser_iterator1、搭建List的基本框架 STL中List容器底层是一个双向带头循环链表。 这里简单搭建一个List&#xff0c;下面我们不断完善。 思路&#xff1a; 1、List作为一个双向带头链表&…

excel函数公式:常用高频公式应用总结 下篇

公式6&#xff1a;根据身份证号码计算出生日期要从身份证号码中得到出生日期&#xff0c;这种问题对于从事人资行政岗位的小伙伴一定不陌生&#xff0c;公式也比较简单&#xff1a;TEXT(MID(A2,7,8),"0-00-00")就能得到所需结果&#xff0c;如图所示&#xff1a;要明…

vue+xlsx实现表格的导入导出:

文章目录一、vue前端使用xlsx和 xlsx-style 导出excel&#xff0c;并修改样式:1、改造后效果&#xff1a;2、实现&#xff1a;3、引入库xlsx-style4、excelUtil.js文件二、前端xlsx插件怎么设置导出的excel列宽自适应&#xff1f;2-1、效果2-2、效果三、xlsx插件&#xff0c;导…

Java语法六:线程安全以及死锁

前言&#xff1a; 接下来我们要了解一下&#xff0c;线程安全的集合类有哪些&#xff1f;什么是死锁以及怎么避免死锁问题。 1.多线程环境使用哈希表 1.1&#xff1a;HashTable 只是简单的把关键方法加上synchronized关键字。 public synchronized V put(K key, V value) p…

(1分钟速览)最近邻搜索--激光SLAM常用必杀技

学习kdtree的数据结构&#xff0c;和二叉树的思想大体上算是比较相似的。参考博客&#xff1a;https://blog.csdn.net/dive_shallow/article/details/113136145建树&#xff0c;一个递归的操作。这里的删除操作很好理解&#xff0c;分左子树和右子树两种情况。如果是左子树那么…

Go语言设计与实现 -- 内存对齐机制

什么是内存对齐 为了能让CPU可以更快的存取到各个字段&#xff0c;Go编译器会帮你把struct结构体做数据的对齐。所谓的数据对齐&#xff0c;是指内存地址是所存储数据的大小&#xff08;按字节为单位&#xff09;的整数倍&#xff0c;以便CU可以一次将该数据从内存中读取出来。…

每天五分钟机器学习:推荐系统中所有用户的损失函数是什么?

本文重点 我们分析机器学习算法都是从损失函数的角度来说的,为了找到最佳的参数θ,可以最小化损失函数,那么本节课程我们将学习基于内容的推荐系统的损失函数是什么? 数据集 我们将每一个电影称为样本,每个电影有两个特征x1、x2,其中x1表示该电影为恐怖片的程度,x2表…

测试开发 | 跨平台设备管理方案 Selenium Grid

Selenium Grid 是 Selenium 的三大组件之一&#xff0c;它可以在多台机器上并行运行测试&#xff0c;集中管理不同的浏览器版本和浏览器配置。通过将客户端命令发送到远程浏览器的实例, Selenium Grid 允许在远程计算机 (虚拟或真实) 上执行 WebDriver 脚本. 它旨在提供一种在多…

SSL证书的类型

SSL证书类型分3类&#xff1a;DV OV EV.域名型&#xff08;DV&#xff09;SSL证书: 信任等级一般&#xff0c;只需验证网站的真实性便可颁发证书保护网站。企业型&#xff08;OV&#xff09;SSL证书: 信任等级强&#xff0c;须要验证企业的身份&#xff0c;审核严格&#xff0c…

VS2017基于CLR运行环境的VC++.NET界面编程(数据库为mysql)

此篇献给暨南大学珠海校区还在用VS2013编写VC++.NET界面程序的苦逼们! 文章分为四个部分: 1、运行环境的搭建 2、数据库的连接 3、控件介绍 4、程序编写示例 程序效果演示视频和程序源码及数据库文件附于文末。 一、运行环境的搭建 VS自从2013版本后淘汰VC++.NET,编写界面…

恒星物联河道流量监测站——雷达流量计

一、产品概述 河道流量监测站是一款采用一体化设计的河道流量智能监测设备&#xff0c;设备由河道雷达流量计、遥测终端机、太阳能供电系统组成。雷达流量计采用先进的K波段平面雷达技术&#xff0c;通过非接触的方式测量水体的流速和水位&#xff0c;根据内置的软件算法&…

TCP协议重点总结(万字总结-附实例)

文章目录前言一、网络的原生情况二、TCP协议2.1 TCP的特点2.2 TCP协议段格式2.3 TCP原理2.3.1 确认应答机制&#xff08;可靠机制&#xff09;2.3.2 序列号2.3.3 超时重传机制&#xff08;可靠机制&#xff09;2.3.4 连接管理机制&#xff08;可靠机制&#xff09;2.3.5 滑动窗…

RabbitMQ的简介和简单使用

同步调用异步调用MQRabbitMQ的使用docker拉取docker pull rabbitmq:3-management启动容器docker run \-e RABBITMQ_DEFAULT_USERitcast \ &#xff08;账号&#xff09;-e RABBITMQ_DEFAULT_PASS123321 \ &#xff08;密码&#xff09;--name mq \--hostname mq1 \-p 15672:156…

开发工具中SpringBoot使用外置Tomcat启动 (亲测有效)-第458篇

历史文章&#xff08;文章累计450&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 SpringBoot添加外部jar包及打包(亲测有…

评测5款国内外免费远控,谁是最好用第一名?

远程控制应用不少人都有了解使用过&#xff0c;尤其是会常用电脑进行工作的群体&#xff0c;比如程序员、设计师、运维、文员等岗位。在隔离居家远程办公时&#xff0c;通过家里的手机、平板或电脑跨系统、跨设备操控公司所用的办公电脑&#xff0c;就能及时处理工作内容&#…