求offer14 level
获赞
1
粉丝
0
关注
0
看过 TA
2
长沙理工大学
2024
算法工程师
IP属地:湖南
暂未填写个人简介
私信
关注
12-19 16:46
已编辑
长沙理工大学 算法工程师
class Parent {    int x = 10;    public void print() {        System.out.println("Parent's print method");    }}class Child extends Parent {    int x = 20;    public void print() {        System.out.println("Child's print method");    }}class aaa{public static void main(String[] args) {       Parent p = new Child();/*Chlid中有Parent的域?因为子类只是隐藏?*/       System.out.println(p.x);       p.print();//p是从Child那赋值来的,print方法已经被覆盖               if (p instanceof Child) {        ((Child) p).print2();        }       /*在代码p.print2();中会出现错误,原因在于变量p的类型是Parent。       虽然它实际指向的对象是Child类型(通过new Child()创建的),       但在编译阶段,编译器只会根据变量声明的类型(也就是Parent类型)来检查能够调用的方法。       由于Parent类中并没有定义print2这个方法,所以编译器认为通过p调用print2是不合法的操作,       从而报错。如果想要调用print2方法,需要先将p进行向下转型(前提是确定实际对象是Child类型)*/}}
0 点赞 评论 收藏
分享
12-10 01:56
已编辑
长沙理工大学 算法工程师
import java.io.*;   public class Main {       public static void  main(String[] args)throws IOException{            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));            //Scanner br=new Scanner(System.in);            String character=null;            while((character=br.readLine())!=null){                byte[] byteArray =character.getBytes();                //当character为char型时,用Character.toString().getBytes()方法                //当character为int、string等等类型时,用String.valueOf()方法                for (byte b : byteArray) {                    String binaryByte = Integer.toBinaryString(b & 0xff);//0和1取0,1和1取1                    /*它的作用是将一个整数与 0xff 进行按位与操作,然后将结果转换为二进制字符串并赋值给变量 binaryByte。其中,“&” 是 按位与 运算符,0xff 是十六进制表示的 255,相当于二进制的 11111111。对0xff进行按位与操作——这样做通常是为了获取一个字节(8 位)的二进制表示,因为在 Java 中整数通常是 32 位或 64 位的,通过与 0xff 进行按位与操作可以只保留原数“二进制数的”低 8 位的值,并将其转换为二进制字符串表示*/                    System.out.println(binaryByte);                }            }                  }   }
0 点赞 评论 收藏
分享
import java.util.Scanner;import java.math.*;   public class Main {       public static boolean isPrime(int n) {           if (n                return false;           }           double m=Math.sqrt(n);           for (int i = 2; i                if (n % i == 0) {                   return false;               }           }           return true;       }       public static void main(String[] args) {           Scanner sca=new Scanner(System.in);           int num = sca.nextInt();           boolean result = isPrime(num);           if (result) {               System.out.println(num + "是素数");           } else {               System.out.println(num + "不是素数");           }       }   }
0 点赞 评论 收藏
分享
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。class Solution {    // 滑动窗口(双指针)    public int minSubArrayLen(int s, int[] nums) {        int left = 0;        int sum = 0;        int result = Integer.MAX_VALUE;        for (int right = 0; right             sum += nums[right]; while (sum >= s) {                result = Math.min(result, right - left + 1);                sum -= nums[left++];            }        }        return result == Integer.MAX_VALUE ? 0 : result;    }}
0 点赞 评论 收藏
分享
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]class Solution {    public int[] sortedSquares(int[] nums) {        int right = nums.length - 1;        int left = 0;        int[] result = new int[nums.length];        int index = result.length - 1;        while (left  if (nums[left] * nums[left] > nums[right] * nums[right]) {                // 正数的相对位置是不变的, 需要调整的是负数平方后的相对位置                result[index--] = nums[left] * nums[left];                ++left;            } else {                result[index--] = nums[right] * nums[right];                --right;            }        }        return result;    }}
0 点赞 评论 收藏
分享
12-05 23:13
已编辑
长沙理工大学 算法工程师
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。// 快慢指针class Solution {    public int removeElement(int[] nums, int val) {        int slowIndex = 0;        for (int fastIndex = 0; fastIndex             if (nums[fastIndex] != val) {                nums[slowIndex] = nums[fastIndex];                slowIndex++;            }        }        return slowIndex;    }}//相向双指针法class Solution {    public int removeElement(int[] nums, int val) {        int left = 0;        int right = nums.length - 1; while(right >= 0 && nums[right] == val) right--; //将right移到从右数第一个值不为val的位置        while(left             if(nums[left] == val) { //left位置的元素需要移除                //将right位置的元素移到left(覆盖),right位置移除                nums[left] = nums[right];                right--;            }            left++; while(right >= 0 && nums[right] == val) right--;        }        return left;    }}
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务