文章目录
- 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;
}
}
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代码仓库