中科软算法面试题_解题

136. 只出现一次的数字

1 、给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

示例 1:

输入: [2,2,1]

输出: 1

示例 2:

输入: [4,1,2,1,2]

输出: 4

//哈希计算数组重复数字
public static void p1(int a[]) {
    int []nums=new int[10];
    for (int i = 0; i <a.length ; i++) {
        nums[a[i]]++;  //
    }
    for (int i = 0; i <nums.length ; i++) {
        if (nums[i]==1){
            System.out.println(i);
        }
    }
}
67. 二进制求和

2、给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0。

示例 1:

输入: a = “11”, b = “1”

输出: “100”

示例 2:

输入: a = “1010”, b = “1011”

输出: “10101”

图片

图片

所以我们可以将两个字符串进行倒序处理

public static void p2(String a,String b) {
    StringBuffer result=new StringBuffer();
     int len=java.lang.Math.max(a.length(),b.length());
     int carry=0;  //进位制
    for (int i = 0; i <len ; i++) {
        //先存储第一位数字
        carry+=i<a.length()?(a.charAt(a.length()-1-i)):0;
        carry+=i<b.length()?(b.charAt(b.length()-1-i)):0;
        //插入除去进位之后的数字
        result.append((char)(carry%2+'0'));
        //保留进位数
        carry/=2;
    }
    //等到完全算完,还有进位
    if(carry>0){
        result.append('1');
    }
    //我们求得的数字是从做到右排列的
   // System.out.println(result.toString());
    result.reverse();
    System.out.println(result.toString());
}
70. 爬楼梯

3、假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2

输出: 2

解释: 有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶

  2. 2 阶

示例 2:

输入: 3

输出: 3

解释: 有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶

  2. 1 阶 + 2 阶

  3. 2 阶 + 1 阶

/* 爬楼梯问题,动态规划,需要设置一个dp[]全局变量,来记录递归过程中重复的数字
普通递归,当n=500的时候就会爆栈了
*/
    private static int dp[]=new int[1000];
    public static int p3(int n) {
        if (n==0||n==1||n==2){return n;}//递归边界
        if(dp[n]!=-1)return dp[n];
        else {
            dp[n]=p3(n-1)+p3(n-2); //计算p3(n)
            //递归全部结束
            return dp[n];
        }
    }
1114. 按序打印

4、我们提供了一个类:

public class Foo {

** public void one() { print(“one”); }**

** public void two() { print(“two”); }**

** public void three() { print(“three”); }**

}

三个不同的线程将会共用一个 Foo 实例。

线程 A 将会调用 one() 方法

线程 B 将会调用 two() 方法

线程 C 将会调用 three() 方法

请设计修改程序,以确保 two() 方法在 one() 方法之后被执行,three() 方法在 two() 方法之后被执行。

示例 1:

输入: [1,2,3]

输出: “onetwothree”

解释:

有三个线程会被异步启动。

输入 [1,2,3] 表示线程 A 将会调用 one() 方法,线程 B 将会调用 two() 方法,线程 C 将会调用 three() 方法。

正确的输出是 “onetwothree”。

示例 2:

输入: [1,3,2]

输出: “onetwothree”

解释:

输入 [1,3,2] 表示线程 A 将会调用 one() 方法,线程 B 将会调用 three() 方法,线程 C 将会调用 two() 方法。

正确的输出是 “onetwothree”。

9. 回文数

5、判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121

输出: true

示例 2:

输入: -121

输出: false

解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10

输出: false

解释: 从右向左读, 为 01 。因此它不是一个回文数。

/*1.最简单的办法,把整数反转,与原来数字比较
单转过来的话,一个数字很可能超过int32位数
2.我们可以选择将一个回文数字,前半段与后半段进行比较
例如"12321",中的"12"和"21",只要相等就符合题意
3.这个时候我们又发现,12和21,就是个十百千位反转,
4.偶数和奇数的区别,"1221"和"12321"
5.负数,与整十数不是回文字数10,20,300
*/
public static boolean isPalindrome(int x) {
    //如果数字为负数,一定不是,个位数字也一定不是
    if (x<0||(x%10==0&&x!=0)){
        return false;
    }
    int reverNum=0;
    //x为偶数时,当x被除以10剩余部分等于rever的时候,循环结束
    //x为奇数时,当x<reverNum的时候,循环结束,例如x=12,reverNum=123
    //因此,我们最好返回的是
    while(x>reverNum){
        reverNum=reverNum*10+x%10;
        x/=10;
    }
    //返回值为布尔类型.用或值
    return x==reverNum||x==reverNum/10;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
中科软LIS系统的数据主要包括以下几个方面: 1. 检验数据:LIS系统可以收集和管理病患的检验信息。通过LIS系统,医院可以实现实时监测、记录和存储检验样本的数据,包括血液、尿液、组织等各种检验项目的结果。医护人员可以快速查询和分析这些数据,提供有针对性的治疗建议。 2. 医嘱数据:LIS系统还包括医嘱数据的管理。医生可以通过LIS系统开具各种检验医嘱,包括必要的检验项目、样本采集方式、检验时间等。这些医嘱数据可以被实时传输给检验科室,确保医嘱的准确和及时性。检验科室通过LIS系统可以查看和处理这些医嘱,进行相应的检验工作。 3. 报告数据:LIS系统还承担生成和管理检验报告的功能。通过LIS系统,检验科室可以迅速生成标准化的检验报告,包括检验结果、参考范围、异常指标的提示等信息。这些报告可以被及时传输给医生和患者,帮助医生进行临床诊断和治疗决策。 4. 质控数据:LIS系统还可以实现质控数据的收集和管理。医院可以设定各种质控指标和标准,通过LIS系统监测各个检验项目的质量,及时发现和纠正问题,确保检验结果的准确性和可靠性。 综上所述,中科软LIS系统的数据主要包括检验数据、医嘱数据、报告数据和质控数据。这些数据的生产、传输和管理可以提高医院的检验效率和质量,为医生的诊断和治疗工作提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以码平川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值