ACM模式刷题(Java)

ACM模式常见输入输出专题(Java版) Java语言ACM模式算法常见的输入输出练习。 阅读详情


常规的读输入输出:scanner基本用法
多行输入输出怎么处理
由字符串变数组再变二叉树,以及反过来怎么操作
由字符串变数组再变链表,以及反过来怎么操作
BufferedRead

一、简单的数组输入

[2,7,11,15]
9
import java.util.Scanner;
   //建议直接都写 * ,这样就可以导进来所有包了
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String line = s.nextLine();         //读取字符串
        System.out.println("字符串:"line);
        int a = s.nextInt();                //读取整数
        System.out.println("整数:"+a);
    }
}

二、构造二叉树(输入)

/**
 * 构造树:层序遍历的思想
 * 这都可以当成一道题了...
 */
public class Main {

    private static class TreeNode {    //二叉树类
        int val;
        TreeNode left, right;
        TreeNode() {}
        TreeNode(int val) { this.val = val; }
        TreeNode(int val,TreeNode left,TreeNode right){
            this.val = val;
            this.left = left;
            this.right = right;
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();

        TreeNode root = StringToTreeNode(str);
        //System.out.println(root.left.val);
    }

    private static TreeNode StringToTreeNode(String str) {
        String[] parts = str
                .substring(1, str.length() - 1)
                .split(",");
    //变成字符串后,逐一处理
        String item = parts[0];
        TreeNode root = new TreeNode(Integer.parseInt(item));    //二叉树的根节点

        Queue<TreeNode> q = new LinkedList<>();    //使用队列添加结点
        q.offer(root);

        int index = 1;
        while (!q.isEmpty()) {
            TreeNode node = q.poll();

            if (index == parts.length) break;

            item = parts[index ++];
            if (!item.equals("null")) {
                node.left = new TreeNode(Integer.parseInt(item));
                q.offer(node.left);
            }

            if (index == parts.length) break;

            item = parts[index ++];
            if (!item.equals("null")) {
                node.right = new TreeNode(Integer.parseInt(item));
                q.offer(node.right);
            }
        }

        return root;
    }
}
//输出
[1,2,3]
2

三、构造数组

/**
 * 构造数组
 */

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        //System.out.println(line);
        int[] nums = StringToIntArray(line);
        //for(int num:nums){
            //System.out.println(num);
        //}
    }
    private static int[] StringToIntArray(String str) {
        String[] parts = str                //根据“,”分割成字符串数组
                .substring(1, str.length() - 1)
                .split(",");
        int[] nums = new int[parts.length];
        for (int i = 0; i < parts.length; i ++)
            nums[i] = Integer.parseInt(parts[i]);    //转为整型数组

        return nums;
    }
}
//输入输出
[1,2,3,4]
[1,2,3,4]
1
2
3
4

四、构造链表

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        System.out.println(line);
        ListNode node = StringToListNode(line);
        System.out.println(node.val);
        System.out.println(node.next.next.next.val);
    }
    private static class ListNode {
         int val;
         ListNode next;
         ListNode() {}
         ListNode(int val) { this.val = val; }
         ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }
    private static ListNode StringToListNode(String str) {
        String[] parts = str    //分割字符串
                .substring(1, str.length() - 1)
                .split(",");

        ListNode dummy = new ListNode(-1), cur = dummy;        //虚拟头结点

        for (String s: parts) {
            cur.next = new ListNode(Integer.parseInt(s));      //逐个添加链表的结点
            cur = cur.next;
        }

        return dummy.next;    //返回真正的头结点
    }
}

五、二叉树变成数组或者字符串(输出)

/**
 * ACM模式:二叉树 删除搜索二叉树的节点
 * 输入:
 * 5 3 6 2 4 null 7
 * 3
 * 输出:
 * [5,4,6,2,null,null,7]
 * 5 4 6 2 null null 7
 */
public class Solution7 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        int key = sc.nextInt();
        String[] parts = line.split(" ");//字符串变数组
        int len = parts.length;
        TreeNode root = strToTree(parts);//数组变树
        TreeNode res = deleteNode(root,key);//题目的处理逻辑
        //树变数组
        Integer[] nums = new Integer[len];
        treeToArray(nums,res,0);
//        //输出1:[5,4,6,2,null,null,7]
//        System.out.println(Arrays.toString(nums));
        String str = Arrays.toString(nums);
        str = str.substring(1,str.length()-1);
        System.out.println(str.replace(","," "));
    }
        private static void treeToArray(Integer[] arr,TreeNode node,int index){
        if(node==null){
            return;
        }
        arr[index] = node.val;
        treeToArray(arr,node.left,2*index+1);
        treeToArray(arr,node.right,index*2+2);
    }

六、其他情况

1. 数字+字符串

import java.util.Scanner;

/**
 * leetcode 回文子串
 * 输入描述:
 * 2
 * abc
 * aaa
 * 输出描述:
 * 3
 * 6
 */
public class Solution5 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        sc.nextLine();//注意一定要有
        for(int i=0;i<num;i++){
            String str = sc.nextLine();
            int res = countSubString(str);
            System.out.println(res);
        }
    }
    public static int countSubString(String s){
        boolean[][] dp = new boolean[s.length()][s.length()];
        int res = 0;
        for(int i=s.length()-1;i>=0;i--){
            for(int j=i;j<s.length();j++){
                if(s.charAt(i)==s.charAt(j)){
                    if(j-i<=1){
                        dp[i][j] = true;
                    }else{
                        dp[i][j] = dp[i+1][j-1];
                    }
                }
            }
        }
        for(int i=0;i<s.length();i++){
            for(int j=0;j<s.length();j++){
                if(dp[i][j]){
                    res++;
                }
            }
        }
        return res;
    }

}

2. BufferedRead用法

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.IOException;
//导入的都是java.io的包
public class Main {
//记得抛异常
    public static void main(String[] args) throws IOException {
       	BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        String line = reader.readLine();//读取某一行 为字符串
        writer.write(String X);//输出 必须是字符串形式
        writer.newLine();//换行
        writer.flush();//放在最后,flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满.
	}
}

3. 需要定义全局变量

public class Main {
    static int n;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
	}
	private static void test(int m){
		int x = m + n;
	}
}

4. 未知多少行输入

有些输入可能是:
输入一个矩阵,每行以空格分隔。
1 2 3
56 8 2 9
对于这种没有给定矩阵行列数的输入,我们只能按照字符串拆分来进行。
public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<List<Integer>> list = new ArrayList<>();
        while (sc.hasNextLine()) { //每行都是一个List数组
            List<Integer> line = new ArrayList<>();
            String str = sc.nextLine();
            String[] arr = str.split(" ");
            for (String s : arr) {
                line.add(Integer.valueOf(s));
            }
            list.add(line);
        }
        System.out.println(list); //[[1, 2, 3], [56, 8, 2, 9]]
    }     
}       

典型例子

1. 二叉树:LeetCode删除二叉搜索树的节点(基于Scanner)

/**
 * ACM模式:二叉树 删除搜索二叉树的节点
 * 输入:
 * 5 3 6 2 4 null 7
 * 3
 * 输出:
 * [5,4,6,2,null,null,7]
 * 5 4 6 2 null null 7
 */
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Solution7 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        int key = sc.nextInt();
        String[] parts = line.split(" ");//字符串变数组
        int len = parts.length;
        TreeNode root = strToTree(parts);//数组变树
        TreeNode res = deleteNode(root,key);//题目的处理逻辑
        //树变数组
        Integer[] nums = new Integer[len];
        treeToArray(nums,res,0);
//        //输出1:[5,4,6,2,null,null,7]
//        System.out.println(Arrays.toString(nums));
        String str = Arrays.toString(nums);
        str = str.substring(1,str.length()-1);
        System.out.println(str.replace(","," "));
    }
    private static class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(){}
        TreeNode(int val){this.val=val;}
        TreeNode(int val,TreeNode left,TreeNode right){
            this.val = val;
            this.left = left;
            this.right = right;
        }
    }

    private static TreeNode strToTree(String[] parts){

        TreeNode root = new TreeNode(Integer.parseInt(parts[0]));
        int index = 1;
        Queue<TreeNode> que = new LinkedList<>();
        que.offer(root);
        while(!que.isEmpty()){
            TreeNode node = que.poll();
            if(index == parts.length) break;
            String item = parts[index];
            index++;
            if(!item.equals("null")){
                TreeNode left = new TreeNode(Integer.parseInt(item));
                node.left = left;
                que.offer(left);
            }
            if(index == parts.length) break;
            item = parts[index];
            index++;
            if(!item.equals("null")){
                TreeNode right = new TreeNode(Integer.parseInt(item));
                node.right = right;
                que.offer(right);
            }
        }
        return root;
    }
    //树转数组
    private static void treeToArray(Integer[] arr,TreeNode node,int index){
        if(node==null){
            return;
        }
        arr[index] = node.val;
        treeToArray(arr,node.left,2*index+1);
        treeToArray(arr,node.right,index*2+2);
    }

    //处理逻辑
    private static TreeNode deleteNode(TreeNode root,int key){
        if(root == null){
            return null;
        }
        //找到了节点
        if(root.val == key){
            //左右都为空
            if(root.left == null && root.right == null){
                return null;
            }
            //左为空
            if(root.left == null && root.right != null){
                return root.right;
            }
            //右为空
            if(root.left != null && root.right == null){
                return root.left;
            }
            //左右非空,把左孩子移到右孩子最左的孩子
            if(root.left != null && root.right != null){
                TreeNode node = root.right;
                while(node.left!=null){
                    node = node.left;
                }
                node.left = root.left;
                return root.right;
            }
        }
        //没找到
        if(root.val>key){
            root.left = deleteNode(root.left,key);
        }else{
            root.right =  deleteNode(root.right,key);
        }
        return root;
    }
}

2. 链表(基于Scanner)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 *  ACM模式:链表  删除链表的倒数第N个结点
 *  输入:
 *      2
 *      [1,2,3,4,5]
 * 输出
 *      [1,2,3,5]
 */
public class Solution8 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int index = sc.nextInt();
        sc.nextLine();
        String line = sc.nextLine();
        ListNode head = strToListnode(line);//字符串变成链表
        ListNode res = removeNthFromEnd(head,index);//处理逻辑
        ArrayList arr = listnodeToArr(res);
        System.out.println(arr.toString());
    }
    //构造链表节点类
    private static class ListNode{
        int val;
        ListNode next;
        ListNode(){}
        ListNode(int val){
            this.val = val;
        }
        ListNode(int val,ListNode next){
            this.val = val;
            this.next = next;
        }
    }
    //字符串变链表
    private static ListNode strToListnode(String line){
        String[] parts = line.substring(1,line.length()-1).split(",");
        ListNode dummy = new ListNode(-1);
        ListNode cur = dummy;
        for (String part : parts) {
            cur.next = new ListNode(Integer.parseInt(part));
            cur = cur.next;
        }
        return dummy.next;
    }
    //链表变数组
    private static ArrayList listnodeToArr(ListNode head){
        ArrayList arr = new ArrayList();
        ListNode dummy = new ListNode(-1);
        dummy = head;
        while(dummy!=null){
            arr.add(dummy.val);
            dummy = dummy.next;
        }
        return arr;
    }
    //处理逻辑
    private static ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummyNode = new ListNode(-1);
        dummyNode.next = head;
        ListNode slow = dummyNode;
        ListNode fast = dummyNode;
        //设slow走的路程是x,fast是y,画图有y-x=n+1,即fast比slow多走n+1
        for(int i = 0;i<n+1;i++){
            fast = fast.next;
        }
        while(fast!=null){
            fast = fast.next;
            slow = slow.next;
        }
        slow.next = slow.next.next;
        return dummyNode.next;
    }

}

3. Scanner超时,使用BufferedRead

在这里插入图片描述

//本题逻辑很简单,但是由于有时间要求,如果用普通的for遍历来实现,会导致超时,用sout的方式的会造成时间增加,
//所以需要用BufferedReader和BufferedWriter来进行读写操作
public class Test03 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        int T = Integer.parseInt(reader.readLine());
        for (int i0 = 0; i0 < T; i0++) {
            int N = Integer.parseInt(reader.readLine());
            char[] a = reader.readLine().toCharArray();
            int M = Integer.parseInt(reader.readLine());
            char[] b = reader.readLine().toCharArray();
            //创建一个对象为优先队列的集合,集合0是0人桌队列,集合1是1人桌队列
            //优先队列数据结构为二叉堆(默认小顶堆,大顶堆需要添加逆序比较器Collections.reverseOrder)
            List<PriorityQueue<Integer>> queueList = new ArrayList<>();
            queueList.add(new PriorityQueue<>());
            queueList.add(new PriorityQueue<>());
            for (int i = 0; i < N; i++) {
                if (a[i] - '0' < 2) {
                    //不同人桌的队列里放从小到大的桌号
                    queueList.get(a[i] - '0').offer(i + 1);
                }
            }
            int x;
            for (int i = 0; i < M; i++) {
                if (b[i] == 'M') {
                    //找1人桌的桌子,假如不为空
                    if (!queueList.get(1).isEmpty()) {
                        //找到1人桌的桌子,输出桌号并出堆
                        x = queueList.get(1).poll();
                        writer.write(String.valueOf(x));
                        writer.newLine();
                    } else {
                        //找到0人桌的桌子,输出桌号并出堆
                        x = queueList.get(0).poll();
                        //将出堆的0人桌插入到1人桌的队列
                        queueList.get(1).offer(x);
                        writer.write(String.valueOf(x));
                        writer.newLine();
                    }

                } else {
                    if (!queueList.get(0).isEmpty()) {
                        x = queueList.get(0).poll();
                        queueList.get(1).offer(x);
                        writer.write(String.valueOf(x));
                        writer.newLine();
                    } else {
                        x = queueList.get(1).poll();
                        writer.write(String.valueOf(x));
                        writer.newLine();
                    }
                }

            }
            writer.flush();
        }
    }
}

4. 对结果去模

int mod = 1000000007
    for(int i=1;i<trees.length;i++){
        sum=sum*i%mod;
    }
    for(int i=0;i<trees.length;i++){
        sum=sum*2*nums[i]%mod;
    }
    for(int i=0;i<trees.length;i++){
        res=(res+sum*call(2*nums[i])%mod)%mod;
LeetCode刷题(ACM模式)-01数组 阅读详情

相关推荐

LeetCode刷题(ACM模式)-03哈希表

LeetCode刷题(ACM模式)-03哈希表

qq_42994487的博客 1737

算法刷题记录——ACM模式

sys使用标准输入读取数据。`是一个文件对象,代表标准输入流,会遍历每一行输入,直到输入结束。去除首尾的空白字符,split()分割成两个字符串。基本语法map(function,对象),对对象中的每个元素应用例1:将字符串列表转换为整数例2:配合split()处理输入例3:与lambda结合使用squared = list(map(lambda x: x**2, nums)) # 输出 [1, 4, 9]

m0_69064462的博客 965

ACM中使用java(完整版)

想了解更全面的资料,请下载该版本! 绝对是不可多得的好资源!

第一周————ACM刷题初体验

(一)例题。

2301_81586202的博客 984

超越音频!STM32 SAI接口在AD7768高速ADC采集中的妙用(含PCB布局指南)

本文深入探讨了如何将STM32的SAI接口应用于AD7768高速ADC的数据采集系统,超越了其传统的音频应用范畴。文章详细解析了SAI协议与ADC时序的匹配方法,提供了从CubeMX配置、DMA数据搬运到关键PCB布局指南的完整实战方案,旨在帮助工程师实现稳定、高精度的工业级高速数据采集。

efc12345678的博客 304

WSL2+Ubuntu-22.04搭建PX4仿真环境:从零避坑到一键起飞

本文详细指导在Windows系统上通过WSL2和Ubuntu-22.04搭建PX4仿真开发环境的完整流程,涵盖环境配置、源码下载、依赖安装、Gazebo仿真及常见错误解决方案,帮助开发者从零避坑实现无人机一键起飞仿真。

k8s6orchestrator的博客 670

【java API】leetcode常用刷题API及ACM模式

如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取。掌握这些API和技巧后,可以高效解决栈和链表相关的算法题,注意边界条件和指针操作的细节!输入的数据为:runoob com。可以看到 com 字符串并未输出。输入的数据为:runoob。

ChanceZhou的博客 2318

实用电路精讲系列---仪表放大器

摘要 仪表放大器通过三级运放架构实现高共模抑制比(CMRR>100dB)和精密差分放大,其核心是第一级同相运放提供高输入阻抗和可调增益(G=1+2R/RG),第二级差分运放消除共模干扰。具有低失调(≤50μV)、低温漂(≤0.6μV/℃)特性,广泛应用于智能断路器电流监测、ECG心电信号放大等场景。典型电路采用LTC1049运放,通过匹配电阻网络实现199倍差分增益,结合输出缓冲确保信号稳定性。设计时需注意输入共模电压范围限制和增益电阻精度,优选集成IC(如AD620、INA128)以规避分立元件匹配

weixin_40590799的博客 2070

面试刷题4:java(核心+acm模式)

【代码】面试刷题4:java(核心+acm模式)

qq_74924951的博客 488

防止加入域主机脱离域的控制(管理员权限)

一、简介   当公司所有主机加入到域后,SA首要工作就是防止加入域的主机脱离域的控制。让我发现该工作的必要性是一程序猿,前一天刚配完禁止执行QQ、微信执行,第二天就看到那家伙在用微信聊天,肯定是用回旧的本地账号登陆了。   本人所在公司安装软件的类型繁杂,无管理员权限运行不少软件会报错,不得不授予「域账号」本地管理员权限。过大的权限带也来了一系列后果:用户可随意退出域、创建本地管理员...

der69615的博客 3173

从零构建智慧农业监测终端:STM32数据采集与LoRa组网实战

本文详细介绍了如何从零构建智慧农业监测终端,涵盖STM32数据采集与LoRa组网实战。通过DHT22温湿度传感器和YL-69土壤湿度传感器实现精准环境监测,结合LoRa无线传输技术解决偏远农田信号问题。文章还分享了硬件选型、电路设计、低功耗优化及Flutter跨平台应用开发等关键技巧,助力农业智能化升级。

weixin_29172963的博客 357

ACM模式|leetcode66.加一|java老白刷题笔记

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一

m0_46106931的博客 576

数字后端流程--place

Floorplan完成后芯片的大致框架已经出现,万里长征已经迈出特别重要的第一步了,前面的步骤我们已经完成了io port,macro的摆放,现在core外只剩下std cell(标准单元)了,Place这一步就是要把std cell放进core里。看到密密麻麻的std cell也不用紧张,因为放std cell不用像macro手动一个一个摆,工具就可以帮我们完成大部分工作。虽然这一步的工作只有一个,但也不是只要Place完就能进行下一步的,衡量Place质量是否满足标准会通过以下几点判断。

qq_68400574的博客 771

2023华为OD统一考试(B卷)题库清单(持续收录中)以及考点说明

锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。行锁特点 :偏向InnoDB 存储引擎,开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

m0_57042151的博客 271

关于Kswapd的理解(一)

关于Kswapd的理解(一) 之前跟踪了MemAvailable的计算方式,其中watermark的计算花了很多精力,在学习的过程中看到一些资料中说watermark是给swapd使用的,于是乎,研究一下看看咯 本部分主要记录两个方面: 对于kswapd这个东西,从初学者(我)的角度出发会考虑哪些内容? 跟踪kswapd 初始化结构部分; 1. KSwapd机制 上图是还没有跟踪kswapd code的时候,对自己提出的一些疑问和自身的理解,主要是如下内容: kswapd 机制用来做什么:内存不足时

And乔的博客 2713

基于YOLOv8的MVTec AD缺陷检测系统设计与实现

速度快,精度高;支持 anchor-free 架构;支持实例分割和图像分类;模块化代码,易于部署与改进;完美兼容 ONNX、TensorRT 等推理框架;官方支持多平台训练和推理(CPU/GPU)。YOLOv8 是工业视觉检测落地非常理想的选择。MVTec AD(Anomaly Detection)数据集包括15类工业对象,每个对象包括多个子类缺陷(例如 “scratch”, “crack”, “hole”)及正常图像。类别缺陷子类bottlecablecapsule。

YOLO 931

阿里内部Java应届生就业宝典,打摆子统统必备,内容太全面

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。

m0_57042151的博客 189

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

学java在哪儿刷面试题?

算法题上 LeetCode,笔试环境用牛客,八股场景找面试鸭,深度真题查 GitHub。四个渠道配合使用,覆盖大厂面试的各个环节。

A_BeamOfLight的博客 270

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vim配置分享(win+mac+Ubuntu三平台)适合刷题做oj练习题

vim配置(win+mac+Ubuntu三平台) 我的Github vim配置(win+mac+Ubuntu三平台) macOS 基础部分 一键编译 vimrc一键编译 gvimrc一键编译 windows 基础部分 一键编译 Ubuntu 偷懒必备 本人是一名大二的学生, 使用vim有一年半了, 整理的这些配置, 有一些是之前学长留下的, 有一些是我自己上网查...

ZZZZone的博客 1458

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

2021兴业数金Java笔试题面经

最近收到了内推,做了一下数金Java在线笔试题,头一回在牛客上笔试。不过大概率是没戏了,因为都没做过笔试训练,笔试做的有点糟糕。对面试做一下回顾吧,希望能帮到后面的人。 笔试范围 时长:120分钟 网站:牛客网 内容:Java基础(40道单选+20道多选)+ 1道简单算法题 注意事项 Java基础部分都来自牛客网,多刷下牛客网的专项训练Java部分即可,算法题的话比较简单,我考试时候题目是[编程题]加一,但也是比较坑的一部分,用的是ACM模式,需要自定义输入输出,这部分就坑了我。可以先在OJ在线编程

m0_67394002的博客 980

榜一的蔑视!阿里专家手写Spring全家桶笔记,整2000页

众所周知,阿里巴巴的主要开发语言就是Java,而对于Java开发者来说,最重要的就是学习Spring框架了。 就不多说了,尤其是对于Spring核心思想做了深度的分析,非常值得大家学习。

m0_57042151的博客 253
上一篇: 面经:Redis
下一篇: JavaWeb(黑马程序员): 前端部分
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值