【日常刷题】为什么二分法不建议使用 (right + left) / 2?

news/2024/7/1 5:48:02

为什么二分法不建议使用 (right + left) / 2?

用left+(right-left)/2,而不用(left+right)/2是担心后者(right+left)的值过大超过了整形的取值范围造成溢出,使结果不准确

就拿奇偶个数来看就知道什么原因了。

valueOf()

当有一个参数时AAA.valueOf(BBB)的作用是将BBB变成AAA类型的数据。AAA和BBB可以是四种数据类型Integer, float, double和String。但在转化为数字的时候若BBB含有非数字的字符则会运行错误。

当有两个参数时Integer.valueOf(String s, int radix)的作用是将字符串s所表示的数字以radix所指定的进制转化会十进制整数,即先假定参数s代表的数是“index进制数”,再将这个“index进制数”转化为十进制数。其中,返回值只能是整型(AAA是Integer),第一参数只能是字符串,第二参数只能是整型。若s中含有非数字的字符则会运行错误。

toCharArray()

String.toCharArray()的作用是将字符串变成与字符串等长的字符数组,这样就可以将单独处理每个字符。该方法没有参数,必须对字符串对象使用。返回值是字符数类型char[]。

char型变量储存的是字符,实际上是字符的ASC码,若直接用char[i]进行输出、运算等操作,得到的结果是char[i]所储存的字符的ASC码。

charAt()

charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

class Solution {
    public char findTheDifference(String s, String t) {
               //先把字符串变为字符数组
        //分别求和作差
        //得到的差转为字符
     int sum = 0;
     int res = 0;
     for (int i = 0; i < s.length(); i++) {
      sum = sum + s.charAt(i); 
  }
     for (int i = 0; i < t.length(); i++) {
   res =res + t.charAt(i);
  }
     
     return (char)(res - sum); 
    }
}

【力扣414找第三大数】

class Solution {
    public int thirdMax(int[] nums) {
        // //冒泡排序从大到小
        // for (int i = 0; i < nums.length - 1; i++) {
        // for (int j = 0; j < nums.length - i - 1; j++) {
        // if(nums[i] < nums[j]) {
        // int temp = nums[i];
        // nums[i] = nums[j];
        // nums[j] = temp;
        // }
        // }
        // }
        Arrays.sort(nums);// 冒泡排序从小到大
        reverse(nums);// 调用方法
        for (int i = 1, diff = 1; i < nums.length; ++i) {
            // 判断相邻元素是否不同 找出三个不同的元素 则返回第三个元素
            // 此时 nums[i]就是第三大的
            if (nums[i] != nums[i - 1] && ++diff == 3) {// 如果相邻不同 与一直连续着三个不重复
                return nums[i];
            }
        }
        return nums[0];
    }

    // reverse方法倒置冒泡排序
    public void reverse(int[] nums) {
        int left = 0, right = nums.length - 1;
        while (left < right) {
            int temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
            left++;
            right--;
        }
    }
}

【蓝桥杯真题 字符统计】

大写字母A的ASCII码是65,小写字母a的ASCII码是97 然后数下去

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        //先转成ASCLL码 整型
        int[] m = new int[26];//26个字母
        for (int i = 0; i < str.length(); i++) {
         //从第一个字母开始依次转成整型 ASCLL码 
         m[(int)str.charAt(i) - 65]++;
  }
        int max = 0;
        //就是从第一个字母开始依次比较字母的出现次数 选出最大的
        for (int i = 0; i < m.length; i++) {
   if(m[i] > max) {
     max = m[i];
   }
  }
        //把其转回字母 +65 
        for (int i = 0; i < m.length; i++) {
   if(m[i] == max) {
    System.out.print((char)(i+65));用print,别用println
   }
  }   
    }
}

http://lihuaxi.xjx100.cn/news/2215658.html

相关文章

算法与数据结构:列表、栈、队列、树、图的深入解析

在软件开发和计算机科学领域&#xff0c;算法和数据结构是两大基石。它们不仅影响着程序的性能&#xff0c;还决定了解决问题的效率。以下&#xff0c;我们将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面&#xff0c;详细解释常见的算法和数据结构&#xff1a;列…

深度学习Day-20:DenseNet算法实战 乳腺癌识别

&#x1f368; 本文为&#xff1a;[&#x1f517;365天深度学习训练营] 中的学习记录博客 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] 一、 基础配置 语言环境&#xff1a;Python3.8编译器选择&#xff1a;Pycharm深度学习环境&#xff1a; torch1.12.1c…

cmake target_include_directories 详解

在 CMake 中&#xff0c;target_include_directories 命令用于向特定目标&#xff08;如可执行文件或库&#xff09;添加包含目录&#xff0c;以便编译器能够找到特定目标所需的头文件。 基本语法 target_include_directories(target_name[SYSTEM] [BEFORE]directory1[direct…

给类设置serialVersionUID

第一步打开idea设置窗口&#xff08;setting窗口默认快捷键CtrlAltS&#xff09; 第二步搜索找到Inspections 第三步勾选主窗口中Java->Serializations issues->下的Serializable class without serialVersionUID’项 &#xff0c;并点击“OK”确认 第四步鼠标选中要加…

JavaScript 逻辑赋值运算符(=,||=,??=)与可选链运算符(?. ??)

一、 短路运算 短路运算是一种常见的逻辑运算方式&#xff0c;其核心机制是在运算过程中进行一些优化和简化&#xff0c;从而提高计算效率和减少资源消耗。特别是在处理逻辑与&#xff08;&&&#xff09;和逻辑或&#xff08;||&#xff09;运算时&#xff0c;如果左侧…

搭建k8s集群报错unknown command “\u00a0“ for “kubeadm init“

搭建k8s报错unknown command “\u00a0” for “kubeadm init” 网上搜了一下&#xff0c;是因为复制过来的命令前面包含了空格&#xff0c;将复制的命令放到idea可以清楚看到几个命令前面有空格&#xff0c;删除掉就好了&#xff0c;记录一下

【电路笔记】-共基极放大器

共基极放大器 文章目录 共基极放大器1、概述2、等效电路3、电流增益4、输入阻抗5、输出阻抗6、电压增益7、示例:电压、电流和功率增益8、总结1、概述 在本文中,我们将介绍双极晶体管放大器的最后一种拓扑,称为共基极放大器 (CBA)。 下面的图 1 显示了 CBA 的电气图,此处没…

【编程语言】Python平台化为何比Java差?

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…