天天看点

数据结构基础训练windos程序设计第一次实验一、学习重点二、学习心得三、gitee代码仓库链接

文章目录

  • windos程序设计第一次实验
  • 一、学习重点
    • 1.寻找数组的中心索引
    • 2.搜索插入位置
    • 3.反转字符串
    • 4.移除元素
    • 5.移动零
  • 二、学习心得
  • 三、gitee代码仓库链接

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;
    }
}
           
数据结构基础训练windos程序设计第一次实验一、学习重点二、学习心得三、gitee代码仓库链接

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;
    }
}
           
数据结构基础训练windos程序设计第一次实验一、学习重点二、学习心得三、gitee代码仓库链接

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--;
        }
    }
}
           
数据结构基础训练windos程序设计第一次实验一、学习重点二、学习心得三、gitee代码仓库链接

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代码仓库

继续阅读