day_7(力扣简单题练习)

1 正数反转(??)

给出一个 32 位 的有符号整数,你需要将这个整数中每位上的数字进行反转

示例 1

输入 :  123

输出 :  321

示例 2

输入 :  -123

输出 :  -321

示例 3

输入 :  120

输出 :  21

public static void main(String[] args) {

        long a=reverse(-2356);

        System.out.println(a);

    }

    public static long reverse(long x) {

        long remain;

        long temp=0;

//只要数据不是0,就可以直接进入计算,0的翻转还是0

        while(x!=0){

            remain=x%10;

            x=x/10;

//Integer.MAX_VALUE表示int数据类型的最大取值数:2 147 483 647

//Integer.MIN_VALUE表示int数据类型的最小取值数:-2 147 483 648

//判断数据是否在正数的范围内

            if(temp>Integer.MAX_VALUE/10 || (temp == Integer.MAX_VALUE && remain>7))return 0;

//判断数据是否超出了负数范围

            if(temp<Integer.MIN_VALUE/10 || (temp == Integer.MIN_VALUE && remain<-8))return 0;

//在范围内,则进行颠倒计算

            temp=temp*10+remain;

        }

    return temp;

    }

2 回文数

判断一个正数是否是回文数,回文数是指正序(从左到右) 和 倒叙(从右到左) 读  都是一样的整数

示例 1

输入 :  121

输出 :  true

示例 2

输入 :  -121

输出 :  false

解释 : 从左到右是 -121.从右到左是 121-  因此不是回文数

示例 3

输入 :  10

输出 :  false

解释 : 从右到左为 01 因此不是回文数

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.print("请输入一个数: ");

int num = sc.nextInt();

int reverseNum = 0, initialNum, remainder = 0;

// 将输入的值赋给initialNum

initialNum = num;

// 每个循环num的数降位

for (; num != 0; num /= 10) {

// reverseNum自己全部的值都升位给num%10的数让位

remainder = num % 10;

reverseNum = (reverseNum * 10) + remainder;

}

// 判断输入值等不等于reverseNum的值

if (initialNum == reverseNum) {

System.out.println("数字 " + initialNum + " 是回文数");

}

else {

System.out.println("数字" + initialNum + "不是一个回文数");

}

}

3 删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度

示例 1

给定数组 nums ={1,1,2};

函数应该返回新的长度 2,并且原数组 nums的前两个元素被修改为 1,2

你不需要考虑数组中超出新长度后面的元素

示例 2

给定 nums={0,0,1,1,1,2,2,3,3,4};

函数应该返回新的长度 5 ,并原数组 nums的前5个元素被修改为 0,1,2,3,4

你不需要考虑数组中超出新长度后面的元素

public static void main(String[] args) {

int[] arr = { 1,1,1,2,3,3,4,5,6,6 };

test(arr);

for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i] + " ");

}

}

// 通过比较数组中相邻的两个数据,不等的话将第一个数据传给数组的第一位,最后输出数组的长度为x+1

    public static int test(int[] arr) {

         int x=1;

for (int j = 0; j < arr.length-1; j++) {

if (arr[j] != arr[j+1]) {

arr[x]=arr[j+1];

x++;

}

}

System.out.println("新数组的长度为"+x);

return 0;

}

4 移除元素

给定一个数组 nums 和一个值 val 你需要原地移除所有数值等于val的元素,返回移除后数组的新长度,不要使用额外的数组空间

元素的顺序可以改变,你不需要考虑数组中超出新长度后面的元素

示例 1

给定 nums = {3,2,2,3};  val = 3;

函数应该返回新的长度 2 , 并且 nums中的前两个元素均为 2

你不需要考虑数组中超出新长度后面的元素

public static void main(String[] args) {

int[] nums = { 1, 1, 1, 2, 3, 3, 4, 5, 6, 6 };

int val = 3;

test(nums, val);

}

// 用valnums中每一个元素做对比,当不等时将数据放到第一位上

public static int test(int[] nums, int val) {

int y = 0;

for (int i = 0; i < nums.length-1; i++) {

if ((val) != nums[i]) {

nums[y] = nums[i];

y++;

}

}

System.out.println("新数组的长度为" + y);

return 0;

}

5 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引,如果目标值不存在数组中,返回他将会被按顺序插入的位置

你可以假设数组中无重复元素

示例 1

输入 :  {1,3,5,6} , 5

输出 :  2

示例 2

输入 :  {1,3,5,6} , 4

输出 :  2

public static void main(String[] args) {

int[] arr = { 1,2,3,5,6,7,8,9 };

int val = 4;

test(arr, val);

}

//将val与数组中的每一个元素作比较,相等时输出此次循环运行次数并输出

//如没有相等的数据,则将数组中第一个大于val的值的地址位置 + 1, 输出

public static int test(int[] arr,int val) {

int x=0;

for (int i = 0; i < arr.length-1; i++) {

if (val==arr[i]) {

break;

}else {

if (val<arr[i]) {

break;

}

}

x++;

}

System.out.println(val+"在数组中的位置是"+ x);

return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值