LeetBook系列文章记录
第一本 数组与字符串
学习地址
前言
作为计算机的学生,对自己的技术实在是感到无奈,下定决心好好学习,写博客也算是对自己小小的记录吧,希望自己能坚持下去。
一、数组简介
1、集合、列表和数组
具体的概念大家可以自行阅读
以上就是集合、列表和数组的介绍,你能自己总结出它们的不同点吗?
对这个问题我的想法是:
1、集合里的元素类型不一定相同,里面的元素没有顺序
2、列表中元素可能不一定相同,有顺序
3、数组是连续存储的带有索引的
2、数组的操作
个人认为这里算是一个小重点了,虽然是听起来的增删改查但是还是要稍微注意下索引都是从0开始的
尤其是在写题目的时候 总是会遇到增删改查以后还需要再排序的操作。
二、 三个代码题目
1.寻找数组的中心索引
数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
代码示例1:
输入:nums = [1, 7, 3, 6, 5, 6]
输出:3
解释:
中心下标是 3 。
左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。
代码示例2:
输入:nums = [1, 2, 3]
输出:-1
解释:
数组中不存在满足此条件的中心下标。
代码示例3: 个人认为这里是比较重要的考虑点
输入:nums = [2, 1, -1]
输出:0
解释:
中心下标是 0 。
左侧数之和 sum = 0 ,(下标 0 左侧不存在元素),
右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0 。
代码如下
代码如下(示例):
//我也是参考了下面的回答才做出来的 我太菜了呜呜呜
class Solution {
public int pivotIndex(int[] nums) {
int sum=0;
for(int i=0;i< nums.length;i++)
{
sum+=nums[i];
}
//此处是针对右边全为0的情况设置的
if(nums[0]==sum)
{
return 0;
}
int left_sum=0;
for(int i=0;i<nums.length;i++)
{
sum-=nums[i];
if(left_sum==sum){
return i;
}
left_sum+=nums[i];
}
return -1;
}
}
2.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
代码示例1:
输入: nums = [1,3,5,6], target = 5
输出: 2
代码示例2:
输入: nums = [1,3,5,6], target = 2
输出: 1
代码示例3:
输入: nums = [1,3,5,6], target = 7
输出: 4
在提示中有一个非常重要的考虑点
代码如下
代码如下(示例):
//这个题我自己写出来的 哈哈哈
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.合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
代码示例1:
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
代码示例2:
输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。
代码如下
代码如下(示例):
//这题我纯纯不会做 技术不到家 回头再好好看看学习学习
//希望有好哥们带带我
总结
以上就是我今天的学习内容,当然这只是小部分哈哈,明天加油
明天继续狠狠的学习!