猴子分桃与反转部分单链表

news2024/9/21 20:40:25

目录

一、编程题

1.猴子分桃

2.反转部分单向链表

二、选择题

1.如果希望监听 TCO 端口 9000,服务器端应该怎样创建 socket?

 2. jre 判断程序是否执行结束的标准是(    )


一、编程题

1.猴子分桃

链接:猴子分桃__牛客网 (nowcoder.com)

老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。
第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。
第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。
后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。
这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。
输入描述:

输入包括多组测试数据。 每组测试数据包括一个整数n(1≤n≤20)。 输入以0结束,该行不做处理。

输出描述:每组测试数据对应一行输出。 包括两个整数a,b。 分别代表开始时最小需要的桃子数,和结束后老猴子最少能得到的桃子数。

示例1

输入

5

1

0

输出

3121 1025

1 1

🔎做题思路:

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            if (n == 0) {
                break;
            } else {
                long startMin =(long) Math.pow(5, n) - 4;//每次分5个剩一个,借4个就可以全分完
                //分1次-----------剩(x+4)*(4/5)
                //分2次-----------剩(x+4)*(4/5)^2
                //分完n次,        剩(x+4)*(4/5)^n
                //剩的数目为整数,且最小,则:(x+4)=5^n,即剩 4^n

                //老猴子得到的数目:剩(4^n)+n(猴子数)-4(借4个)
                long endMin = (long) Math.pow(4, n) + n - 4;
                System.out.println(startMin + " " + endMin);
            }
        }
    }

2.反转部分单向链表

链接:反转部分单向链表__牛客网 (nowcoder.com)

给定一个单链表,在链表中把第 L 个节点到第 R 个节点这一部分进行反转。

输入描述: n 表示单链表的长度。 val 表示单链表各个节点的值。 L 表示翻转区间的左端点。 R 表示翻转区间的右端点。

输出描述: 在给定的函数中返回指定链表的头指针。

示例1

输入

5

1 2 3 4 5

1 3

输出

3 2 1 4 5

做题思路:

public class Main {

    //首先定义单链表的节点
    static class Node {
        int val;
        Node next;

        public Node(int val) {
            this.val = val;
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //获取当前链表的节点个数
        int n = scanner.nextInt();
        //吃掉 nextInt 方法的换行符
        scanner.nextLine();
        //"1 2 3 4 5"
        String nodeValue = scanner.nextLine();
        String[] nodes = nodeValue.split(" ");//按照空格拆分

        //1.进行单链表的创建
        Node dummyHead = new Node(-1);//虚拟节点
        Node tail = dummyHead;
        for (int i = 0; i < n; i++) {
            //链表的尾插
            Node node = new Node(Integer.parseInt(nodes[i]));//字符串转化为整型
            tail.next = node;
            tail = node;
        }

        //2.获取左区间和右区间的范围“1 3”
        String part = scanner.nextLine();
        // 1
        int left = Integer.parseInt(part.split(" ")[0]);//空格拆分第一个是左区间
        // 3
        int right = Integer.parseInt(part.split(" ")[1]);//空格拆分第二个是右区间
        //将传入链表按照左区间到右区间进行翻转
        Node newHead = reversePartList(dummyHead.next, left, right);
        //进行输出处理
        while (newHead != null) {
            System.out.print(newHead.val + " ");
            newHead = newHead.next;
        }
    }

    private static Node reversePartList(Node head, int left, int right) {
        Node dummyHead = new Node(-1);//虚拟节点
        dummyHead.next = head;
        // prev 引用指向待反转区间的前驱节点
        Node prev = dummyHead;
        for (int i = 1; i < left; i++) {
            prev = prev.next;
        }
        //cur 引用就是待反转区间的第一个节点
        Node cur = prev.next;
        for (int i = left; i < right; i++) {
            Node third = cur.next;
            //先把 third 引用从链表中删除
            cur.next = third.next;
            //再把 third 节点头插入 prev 之后
            third.next = prev.next;
            prev.next = third;
        }
        return dummyHead.next;
    }
}

二、选择题

1.如果希望监听 TCO 端口 9000,服务器端应该怎样创建 socket?

 2. jre 判断程序是否执行结束的标准是(    )

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

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

相关文章

C# 平台调用过程

(1&#xff09;调用LoadLibrary加载非托管DLL到内存中,并调用GetProcAddress 获得内存中非托管函数的指针。 (2) 为包含非托管函数地址的托管签名生成一个DllImport存根&#xff08;stub)。 (3) 压入被调用方保存的寄存器。 (4&#xff09;创建一个DllImport帧&#xff08;fr…

Node.js—http模块

目录 1、HTTP 协议1.1 概念1.2 请求报文的组成1.3 HTTP 的请求行1.4 HTTP 请求头1.5 HTTP 的请求体1.6 响应报文的组成 2、创建 HTTP 服务2.1 操作步骤2.2 测试2.3 注意事项 3、获取 HTTP 请求报文3.1 请求方法 request.method3.2 请求版本 request.httpVersion3.3 请求路径 re…

shell 初级

判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 [rootlocalhost ~]# bash c.sh c.sh: line 7: echo剩余内存:1GB,小于20GB 判断web服务是否运行&#xff08;1、查看进程的方式判断该程序是…

ctfshow_愚人杯WEB之easy_flask

1、easy_flask 百度了下什么是flask&#xff0c;flask是一款非常流行的python web框架。 2、尝试步骤 &#xff08;1&#xff09;、搜索博文&#xff0c;查看该题是如何破解的 先注册账号&#xff0c;登录自己注册的账号&#xff0c;查看可访问内容&#xff08;可以查看到部…

深入探讨Linux驱动开发:字符设备驱动开发与测试

文章目录 一、字符设备驱动介绍1.设备驱动介绍 二、设备号1.设备号介绍2.分配与释放设备编号①dev_t类型②静态分配设备号③动态分配设备号④释放主次设备号⑤手动创建设备节点⑥自动创建设备节点⑦删除设备节点 三、字符设备注册1.cdev结构体2.注册cdev到内核 三、字符设备驱动…

黑马点评实战篇问题总结

缓存穿透 用户查询的数据在缓存和数据库中都不存在 这样的请求每次都会打到数据库上 解决方案&#xff1a; 1.缓存空字符串&#xff08;额外的内存消耗&#xff0c;可能造成短期的不一致&#xff09; 2.布隆过滤&#xff08;内存占用少&#xff0c;没有多余key&#xff0c;实现…

访问若依vue版后端api接口

访问若依vue版后端api接口 如何使用Talend API Tester进行访问若依vue-前后端分离版的后端api接口&#xff1f; 方法一&#xff1a; 写好一个后台api接口&#xff0c;启动项目 直接使用Talend API Tester进行访问后台api出现如下错误&#xff0c;原因是因为若依系统有jwt认证…

2023软件测试工程师涨薪攻略,3年如何达到30K?

1.软件测试如何实现涨薪 首先涨薪并不是从8000涨到9000这种涨薪&#xff0c;而是从8000涨到15K加到25K的涨薪。基本上三年之内就可以实现。 如果我们只是普通的有应届毕业生或者是普通本科那我们就只能从小公司开始慢慢往上走。 有些同学想去做测试&#xff0c;是希望能够日…

数据可视化的web工具 apache-superset

文章目录 简介安装window10Ubuntu1804CentOS8 配置连接数据库创建仪表板创建图表图表加入仪表板时间序列折线图 简介 Superset是一款由Airbnb开源的、目前由Apache孵化的&#xff0c;基于Flask-appbuilder搭建的“现代化的企业级BI&#xff08;商业智能&#xff09;Web应用程序…

很合适新手入门使用的Python游戏开发包pygame实例教程-02[如何控制飞行]

前面一篇博文&#xff0c;我们让飞机动起来了&#xff0c;但不是那么完美&#xff0c;我们继续来完善我们的游戏代码&#xff0c;本篇博文主要介绍获取按键的方式已经飞行的控制。 文章目录 一、获取按键的三种方式1、通过event.get配合pygame.key枚举2、通过event.get配合ord…

C++入门教程||C++ 文件和流||C++ 异常处理

C 文件和流 C 文件和流 到目前为止&#xff0c;我们已经使用了 iostream 标准库&#xff0c;它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。 本教程介绍如何从文件读取流和向文件写入流。这就需要用到 C 中另一个标准库 fstream&#xff0c;它定义…

《我的第一本算法书》读书笔记

《我的第一本算法书》读书笔记 作者&#xff1a;宫崎修一 石田保辉 ◆ 1-3 数组 在链表和数组中&#xff0c;数据都是线性地排成一列。在链表中访问数据较为复杂&#xff0c;添加和删除数据较为简单&#xff1b;而在数组中访问数据比较简单&#xff0c;添加和删除数据却比较复…

转行IT,怎么选专业?

转行IT&#xff0c;怎么选专业&#xff1f; 知己知彼&#xff0c;百战不殆 先清楚你自身的基础情况&#xff1a;学历、年龄、是否有基础、学习能力如何、自律性、时间管理能力、有没有生活压力、有没有家要养、车贷、房贷…… 思考的问题越现实&#xff0c;对你的帮助越大 选…

运营商大数据获客是什么,是如何实现精准获客的

长久以来&#xff0c;企业希望自己的产品获得更多的客户&#xff0c;那么就需要花钱做推广和营销。然而随着互联网和自媒体的发展&#xff0c;并不是钱花出去了&#xff0c;就能带来有效的流量和高质量的客户&#xff0c;费效比太高&#xff0c;精准度太差&#xff0c;没有好的…

神经网络初学者的激活函数指南

如果你刚刚开始学习神经网络&#xff0c;激活函数的原理一开始可能很难理解。但是如果你想开发强大的神经网络&#xff0c;理解它们是很重要的。 但在我们深入研究激活函数之前&#xff0c;先快速回顾一下神经网络架构的基本元素。如果你已经熟悉神经网络的工作原理&#xff0c…

STM32+ESP8266+QT客户端上位机显示DHT11温湿度与点灯

目录 1、简介 2、硬件连接 3、上位机源码 3.1 widget.h 3.2 widget.c 3.3 显示图 4、下位机源码 4.1 cubemax配置 4.2 keil源码 1、简介 本文使用STM32F103C8T6单片机使用单片机通过ESP8266WIFI模块与QT设计的上位机进行通讯&#xff0c;ESP8266设置AP模式。实现DHT11传…

跨越DDD从理论到工程落地的鸿沟

DDD作为一种优秀的设计思想&#xff0c;的确为复杂业务治理带来了曙光。然而因为DDD本身难以掌握&#xff0c;很容易造成DDD从理论到工程落地之间出现巨大的鸿沟。就像电影里面的桥段&#xff0c;只谈DDD理论姿势很优美&#xff0c;一旦工程落地就跪了…所以DDD的项目&#xff…

Android实战-RecyclerView+Glide刷新列表的若干bug

文章目录 前言一. RecyclerView中使用Glide出现加载图片闪烁1.1 提出问题1.2 查看源码1.3 ViewTarget和SimpleTarget 二. CustomTarget和CustomViewTarget2.1 onResourceCleared和onLoadCleared2.2 onLoadStarted和onResourceLoading 结束 前言 最近在项目中使用RecyclerViewG…

Java——合并两个排序的链表

题目链接 牛客在线oj题——合并两个排序的链表 题目描述 输入两个递增的链表&#xff0c;单个链表的长度为n&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围&#xff1a; 0≤n≤1000&#xff0c;−1000≤节点值≤1000 要求&#xff1a;空间复杂…

物联网定位技术|实验报告|实验二 多边定位算法、DV-HOP算法

在WSN定位中常常采用三边定位算法&#xff0c;试画图推导三边定位的计算公式&#xff0c;并表示为矩阵形式。 目录 1. 实验目标 2. 实验要求 3. 算法介绍 3.1基本内容介绍 3.2迭代多边定位算法 3.3 DV-HOP算法 4. 算法实现 4.1迭代多边定位算法 第一步&#xff1a;将数据读入内…