数据结构基础训练


windos程序设计第一次实验

《数组与字符串》习题

一、学习重点

1.寻找数组的中心索引

给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。
数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。
注意:中心下标可能出现在数组的两端。

public class Solution {
    public int PivotIndex(int[] nums) {
        int sum=0;
        int total=0;
        for(int i = 0;i<nums.Length;i++){
            total+=nums[i];
        }
        for(int i = 0;i<nums.Length;i++){
            sum+=nums[i];
            if(sum==total-sum+nums[i]){
                return i;
            }
        }
        return -1;
    }
}

2.搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。

public class Solution {
    public int SearchInsert(int[] nums, int target) {
        for(int i=0;i<nums.Length;i++){
            if(target<=nums[i]){
                return i;
                }
        }
        return nums.Length;
    }
}

3.反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

public class Solution {
    public void ReverseString(char[] s) {
        int low = 0;
        int height = s.Length-1;
        char temp;
        while(low<=height){
            temp=s[low];
            s[low]=s[height];
            s[height]=temp;
            low++;
            height--;
        }
    }
}

4.移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。*

public int removeElement(int[] nums, int val) {
        int slow = 0;
        for(int fast = 0;fast<nums.length;fast++){
            if(nums[fast]!=val){
                nums[slow]=nums[fast];
                slow++;
            }
        }
        return slow;
    }

5.移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

 public void moveZeroes(int[] nums) {
        int slow = 0;
        int temp = 0;
        for(int fast = 0;fast<nums.length;fast++){
            if(nums[fast]!=0){
                temp=nums[slow];
                nums[slow]=nums[fast];
                nums[fast]=temp;
                slow++;
            }
        }
    }

二、学习心得

在Java 中,数组中的元素类型必须保持一致,java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法。如:String toString(int[] a) 输出数组信息。在使用数组下标遍历和操作数组时要特别注意两类容易出现的异常:①数组脚标越界异常(ArrayIndexOutOfBoundsException) ②空指针异常(NullPointerException)。

三、gitee代码仓库链接

点击进入gitee代码仓库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值