Java常见算法题解析面试题(下)

21.回文数。【了解】
问题描述:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
public class lianxi { 
    public static void main(String[] args) { 
        Scanner s = new Scanner(System.in); 
        int a; 
        do{ 
            System.out.print("请输入一个5 位正整数:");
            a = s.nextInt(); 
        }while(a<10000||a>99999); 
        String ss =String.valueOf(a); 
        char[] ch = ss.toCharArray(); 
        if(ch[0]==ch[4]&&ch[1]==ch[3]){
            System.out.println("这是一个回文数");
        } else {
            System.out.println("这不是一个回文数");
        } 
    }
}

//这个更好,不限位数
public class lianxi{ 
    public static void main(String[] args) { 
        Scanner s = new Scanner(System.in);
        boolean is =true;
        System.out.print("请输入一个正整数:");
        long a = s.nextLong();
        String ss = Long.toString(a); 
        char[] ch = ss.toCharArray(); 
        int j=ch.length; 
        for(int i=0; i<j/2; i++) { 
            if(ch[i]!=ch[j-i- 1])
                is=false;
        }
        if(is==true){
            System.out.println("这是一个回文数");
        } else {
            System.out.println("这不是一个回文数");
        }
    }
}
22.判断100之内的素数。【重点】
//使用除sqrt(n)的方法求出的素数不包括2 和3 
public class lianxi { 
    public static void main(String[] args) { 
        boolean b =false; 
        System.out.print(2 + " ");
        System.out.print(3 + " ");
        for(int i=3; i<100; i+=2) { 
            for(int j=2; j<=Math.sqrt(i); j++) { 
                if(i % j == 0) {
                    b = false;
                    break;
                } else{
                    b = true;
                } 
            }
            if(b == true) {
                System.out.print(i + " ");
            } 
        }
    } 
}
//该程序使用除1 位素数得2 位方法,运行效率高通用性差。 
public class lianxi { 
    public static void main(String[] args) { 
        int[] a = new int[]{2, 3, 5, 7};
        for(int j=0; j<4; j++)
            System.out.print(a[j] + " ");
        boolean b =false;
        for(int i=11; i<100; i+=2) {
            for(int j=0; j<4; j++) { 
                if(i % a[j] == 0) {
                    b = false; break;
                } else{
                    b = true;
                } 
            }
            if(b == true) {
                System.out.print(i + " ");
            }
        }
    } 
}
23.3*3矩阵对角线元素之和。【了解】
public class lianxi { 
    public static void main(String[] args) { 
        Scanner s = new Scanner(System.in); 
        int[][] a = new int[3][3];
        for(int i=0; i<3; i++) { 
            for(int j=0; j<3; j++) { 
                a[i][j] = s.nextInt();
            }
        }
        System.out.println("输入的3 * 3 矩阵是:");
        for(int i=0; i<3; i++) { 
            for(int j=0; j<3; j++) { 
                System.out.print(a[i][j] + " "); 
            }
            System.out.println(); 
        }
        int sum = 0; 
        for(int i=0; i<3; i++) {
            for(int j=0; j<3; j++) { 
                if(i == j) { 
                    sum += a[i][j]; 
                }
            }
        }
        System.out.println("对角线之和是:"+sum); 
    }
}
24.杨辉三角形。【了解】
      1
     1 1 
    1 2 1 
   1 3 3 1 
  1 4 6 4 1 
1 5 10 10 5 1 
public class lianxi{ 
    public static void main(String[] args) { 
        int[][] a = new int[10][10]; 
        for(int i=0; i<10; i++) { 
            a[i][i] = 1; a[i][0] = 1;
        }
        for(int i=2; i<10; i++) { 
            for(int j=1; j<i; j++){
                a[i][j] = a[i-1][j-1] + a[i-1][j]; 
            }
        }
        for(int i=0; i<10; i++) {
            for(int k=0; k<2*(10-i)-1; k++) {
            System.out.print(" ");
        }
        for(int j=0; j<=i; j++) { 
            System.out.print(a[i][j] + " ");
        }
            System.out.println();
    }
}
25.报数游戏。【了解】
问题描述:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
public class lianxi { 
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.print("请输入排成一圈的人数:");
        int n = s.nextInt();
        boolean[] arr = new boolean[n]; 
        for(int i=0; i<arr.length; i++) { 
            arr[i] = true; 
        }
        int leftCount = n; 
        int countNum = 0; 
        int index = 0;
        while(leftCount > 1) {
            if(arr[index] == true) {
                countNum ++; 
                if(countNum == 3) {
                    countNum =0; 
                    arr[index] = false; 
                    leftCount --; 
                }
            }
            index ++;  
        }
        index = 0;
    }
    for(int i=0; i<n; i++) { 
        if(arr[i] == true) {
            System.out.println("原排在第"+(i+1)+"位的人留下了。");
        }
    }
}
26.猴子分桃。【了解】
问题描述:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
public class lianxi{ 
    public static void main (String[] args) { 
        int i,m,j=0,k,count; 
        for(i=4;i<10000;i+=4) { 
            count=0; m=i; 
            for(k=0;k<5;k++) {
                j=i/4*5+1; 
                i=j; 
                if(j%4==0) 
                    count++;
                else 
                    break; 
            } 
            i=m; 
            if(count==4) {
                System.out.println("原有桃子"+j+" 个");
                break;
            }
        }
    }
}
27.一个偶数总能表示为两个素数之和。【了解】
//由于用除sqrt(n)的方法求出的素数不包括2 和3,
//因此在判断是否是素数程序中人为添加了一个3。 
public class lianxi{ 
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in); 
        int n,i; 
        do{
            System.out.print("请输入一个大于等于6 的偶数:");
            n = s.nextInt(); 
        } while(n<6||n%2!=0); 
        //判断输入是否是>=6 偶数,不是,重新输入 
        fun fc = new fun(); 
        for(i=2;i<=n/2;i++){ 
            if((fc.fun(i))==1&&(fc.fun(n-i)==1)) {
                int j=n-i; 
                System.out.println(n+" = "+i+" + "+j);
            } 
            //输出所有可能的素数对 
        } 
    }
}
class fun{ 
    //判断是否是素数的函数
    public int fun (int a) {
        int i,flag=0; 
        if(a==3){
            flag=1;
            return(flag);
        } 
        for(i=2;i<=Math.sqrt(a);i++){ 
            if(a%i==0) {
                flag=0;
                break;
            } else 
                flag=1;
        } 
        return (flag) ;
        //不是素数,返回0,是素数,返回1 
    }
}

//解法二 
import java.util.*;
public class lianxi {
    public static void main(String[] args) { 
        Scanner s = new Scanner(System.in);
        int n; 
        do{
            System.out.print("请输入一个大于等于6 的偶数:");
            n = s.nextInt();
        } while(n<6||n%2!=0); 
        //判断输入是否是>=6 偶数,不是,重新输入
        for(int i=3;i<=n/2;i+=2){ 
            if(f un(i)&&fun(n-i)) {
                
            } 
            //输出所有可能的素数对
        } 
    }
    static boolean fun (int a){
        //判断是否是素数的函数
        boolean flag=false; 
        if(a==3){
            flag=true;return(flag);
        } 
        for(int i=2;i<=Math.sqrt(a);i++){ 
            if(a%i==0) {
                flag=false;
                break;
            } else 
                flag=true;
        } 
        return (flag) ; 
    }
}
28.选择排序。【重点】
/**
* 选择排序
* 在未排序序列中找到最小元素,存放到排序序列的起始位置。
* 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。
* 以此类推,直到所有元素均排序完毕。
*/ 
public static void selectSort(int[] numbers) { 
    int size = numbers.length, temp;
    for (int i = 0; i < size; i++) { 
        int k = i; 
        for (int j = size - 1; j >i; j--) {
            if (numbers[j] < numbers[k]) 
                k = j; 
        }
        temp = numbers[i];
        numbers[i] = numbers[k]; 
        numbers[k] = temp;
    } 
}
29.插入排序。【重点】
/**
* 插入排序
* 从第一个元素开始,该元素可以认为已经被排序
* 取出下一个元素,在已经排序的元素序列中从后向前扫描
* 如果该元素(已排序)大于新元素,将该元素移到下一位置
* 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
* 将新元素插入到该位置中
* 重复步骤2
*/ 
public static void insertSort(int[] numbers) { 
    int size = numbers.length, temp, j;
    for(int i=1; i<size; i++) { 
        temp = numbers[i];
        for(j = i; j > 0 && temp < numbers[j-1]; j--) 
            numbers[j] = numbers[j-1]; 
        numbers[j] = temp; 
    }
}

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

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

相关文章

GPT-4 Vision调试任何应用,即使缺少文本日志 升级Streamlit七

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

本地配置Joplin Server用于Joplin笔记同步并实现公网远程访问

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具&#xff0c;拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能&#xff0c;…

LabVIEW潜油电泵数据采集系统

LabVIEW潜油电泵数据采集系统 介绍一个基于LabVIEW的潜油电泵数据采集系统。该系统目的是通过高效的数据采集和处理&#xff0c;提高潜油电泵的性能监控和故障诊断能力。 系统由硬件和软件两部分组成。硬件部分主要包括数据采集卡、传感器和电泵等&#xff0c;而软件部分则是…

IMX6LL|打造自己的驱动总线

xbus&#xff1a;打造自属的驱动总线 驱动总线 软件与硬件代码分离&#xff0c;提高程序的复用性 device–关联硬件代码driver_devices–关联软件代码bus_type–统一管理、设置match匹配规则 设备驱动模型体现分离思想 bus-xbus-devices-drivers 总线管理 buses_init()函…

鸿蒙系统扫盲(七):勘误补充总结,收个尾

这是笔者鸿蒙扫盲系列的最后一篇了&#xff0c;准备对过去的六篇扫盲系列文章&#xff0c;错误的地方做一些勘误&#xff0c;并且补充更新一些朋友们感兴趣的知识&#xff0c;最后收个尾。 1.勘误&#xff0c;编译型语言和解释型语言 在鸿蒙系统扫盲&#xff08;五&#xff0…

网工内推 | 网络安全工程师专场,大平台,六险一金

01 汽车之家 招聘岗位&#xff1a;高级网络安全工程师 职责描述&#xff1a; 1、负责公司网站、系统与产品的漏洞扫描、渗透测试与安全评估工作&#xff1b; 2、负责公司安全系统与安全设备的运维&#xff0c;负责公司网络安全监控管理&#xff1b; 3、负责公司安全事件的应急…

社区投稿|Desig质押聚合器功能,帮助用户选出更适合的质押策略

在Sui上&#xff0c;不同的质押协议提供收益各异的产品&#xff0c;因此用户面临着众多可以质押token的协议&#xff0c;眼花缭乱无从选择。Desig质押聚合器功能现已整合到Desig钱包扩展中&#xff0c;极大地简化了寻找质押策略的流程。事实上&#xff0c;其智能质押功能支持完…

记录:Windows上QML程序打包

0.本文修改记录 &#xff08;2019-9-3&#xff09; 修改了VC环境相关的内容 &#xff08;2020-3-5&#xff09; 修改了QML模块相关的内容 &#xff08;2022-8-31&#xff09;one-rabbit大佬指出打包命令的参数错误&#xff0c;根据文档可知&#xff1a;qmldir应该为exe对应项…

使用C++操作Matlab中的mat文件

matlab提供读写MAT文件的头文件和库函数&#xff0c;下面列出这些文件的路径&#xff0c;其中matlabroot指matlab安装的路径&#xff0c;arch来识别平台架构 头文件在matlabroot\extern\include库函数在matlabroot\bin\win64例程在matlabroot\extern\examples\eng_mat头文件 …

力扣(leetcode)第136题只出现一次的数字(Python)

136.只出现一次的数字 题目链接&#xff1a;136.只出现一次的数字 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;…

transformer_位置编码代码笔记

transformer_位置编码代码笔记 transformer输入的序列中&#xff0c;不同位置的相同词汇可能会表达不同的含义&#xff0c;通过考虑位置信息的不同来区分序列中不同位置的相同词汇。 位置编码有多种方式&#xff0c;此处仅记录正余弦位置编码 正余弦位置编码公式如下&#x…

宠物用品/宠物自动饮水机方案

宠物自动饮水机方案原理 宠物自动饮水机&#xff0c;也叫做智能宠物饮水机&#xff0c;是一种为宠物设计的智能化饮水器。应用核心主要在于智能化水泵控制&#xff0c;以及外围传感器电路。 宠物自动饮水机使用方便&#xff0c;不用频繁的换水。另外&#xff0c;自来水的水质可…

(6)Elastix图像配准:可视化配准工具

文章目录 前言一、配准工具1.1、基于Elastix的可视化配准工具1.1.1、elastix-napari&#xff1a;基于napari的Elastix图像配准1.1.2、SlicerElastix&#xff1a;基于3D slice的Elastix图像配准1.1.3、BIRDS&#xff1a;基于ImageJ的Elastix双通道图像配准 1.2、基于ITK开发的配…

「HDLBit题解」Finding bugs in code

本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接&#xff1a;Bugs mux2 - HDLBits module top_module (input sel,input [7:0] a,input [7:0] b,output [7:0] out );assign out sel ? a : b…

微信小程序如何实现点击上传图片功能

如下所示,实际需求中常常存在需要点击上传图片的功能,上传前显示边框表面图片显示大小,上传后将图形缩放到边框大小。 实现如下: .wxml <view class="{{img_src==?blank-area:}}" style="width:100%;height:40%;display:flex;align-items: center;jus…

Midjourney:AI创意的新航程

在数字化时代的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;已经成为推动创新和创意的重要力量。Midjourney&#xff0c;作为MidTool平台的一项核心功能&#xff0c;正引领着AI创意的新航程&#xff0c;为艺术家、设计师、创业者乃至任何有创意需求的人提供了一个全新…

容器算法迭代器初识

#include<iostream> using namespace std; #include<vector> //vetor容器存放内置数据类型 void test01() {//创建了一个vector容器&#xff0c;数组 vector<int> v;//向容器中插入数据v.push_back (10);//尾插 v.push_back (20);v.push_back (30);v.push_ba…

WIN11 - WSL(Windows Subsystem for Linux) 安装教程

前言 WSL&#xff0c;即Windows Subsystem for Linux&#xff0c;是一种在Windows操作系统上运行Linux二进制文件的兼容层。该层提供了Linux环境和GNU工具&#xff0c;可以在Windows系统上运行Linux应用程序。WSL使得开发人员可以在Windows系统上使用Linux工具和命令行界面&am…

项目实战:一个基于标准库的具备最值获取的万能容器实现

目录 写在前面 需求 分析 接口设计 项目实现 一些思考与总结 致谢 写在前面 刚刚介绍了变参模板和完美转发&#xff0c;现在换一换脑子做一个小的项目实战吧。博主最近学习的是标准库&#xff0c;总体来说&#xff0c;我认为标准库中的内容是很trivial的&#xff0c;重点…

04 避免 Latch 的产生

Latch 是什么 latch 即锁存器&#xff0c;是一种对电平敏感的存储单元电路&#xff0c;和寄存器一样都是基本存储单元&#xff0c;但是寄存器是边沿触发的存储器&#xff0c;锁存器是电平触发的存储器。 组合逻辑电路和时序逻辑电路 在数字电路中将逻辑电路分成两大类&#…