首页 > 其他分享 >数组和字符串

数组和字符串

时间:2024-08-03 18:39:49浏览次数:12  
标签:right nums int intervals 数组 ans 字符串 left

数组简介

1. LeetCode 1991 找到数组的中间位置

方法1:前缀和

class Solution {
    public int findMiddleIndex(int[] nums) {
        int tol = 0, s = 0;
        for(int num : nums) 
            tol += num;
        for(int i = 0; i < nums.length; i++) {
            if(s == tol - s - nums[i])
                return i;
            s += nums[i];
        }
        return -1;
    }
}

2. LeetCode 35 搜索插入位置

方法1:二分查找

class Solution {
    public int searchInsert(int[] nums, int target) {
        int left = 0, right = nums.length;
        while(left < right) {
            int mid = (left + right) >> 1;
            if(nums[mid] < target)
                left = mid + 1;
            else
                right = mid;
        }
        return left;
    }
}

3. LeetCode 56 合并区间

方法1:贪心

  • 排序 (a, b) -> a[0] - b[0]
  • 列表转数组 toArray(new int[M][N])
class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
        List<int []> ans = new ArrayList<int []>();
        for(int[] info : intervals) {
            int n = ans.size(), left = info[0], right = info[1];
            // 数组为空 或 区间不能合并
            if(n == 0 || ans.get(n - 1)[1] < left)
                ans.add(info);
            else // 进行合并区间
                ans.get(n - 1)[1] = Math.max(ans.get(n - 1)[1], right);
        }
        return ans.toArray(new int[ans.size()][2]);
    }
}
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda x: x[0])
        ans = list()
        for (left, right) in intervals:
            # 列表为空 或 区间不能合并
            if not ans or ans[-1][1] < left:
                ans.append([left, right])
            else: # 区间可以合并
                ans[-1][1] = max(ans[-1][1], right)
        return ans

二维数组简介

字符串简介

双指针技巧

标签:right,nums,int,intervals,数组,ans,字符串,left
From: https://www.cnblogs.com/XuGui/p/18340889

相关文章

  • 字符串
    aaa今天字符串专题1)KMP思想是对于每一位求出最长的后缀等于前缀的长度next周期:字符串:【】【】【】【】【不完整周期】【】就是周期有一个周期就是串长减去next,所有周期长度都是最小周期的倍数;如果串不是最小周期的倍数,则这个串没有循环节。【NOI2014动物园】点击......
  • 模拟实现strcmp,判断二个字符串是否相等
    1.判断二个字符串是否相等,可以模仿strcmp.当二个字符串相等的时候ruturn0.,当二个字符串小于时返回为小于0,当二个字符串大于时返回为大于0。const为不可以更改。//方法一intmy_strcmp(constchar*arr1,constchar*arr2){ assert(arr1&&arr2); while(*arr1==*arr2)......
  • 2024-08-03:用go语言,给定一个从 0 开始的字符串数组 `words`, 我们定义一个名为 `isPref
    2024-08-03:用go语言,给定一个从0开始的字符串数组words,我们定义一个名为isPrefixAndSuffix的布尔函数,该函数接受两个字符串参数str1和str2。当str1同时是str2的前缀和后缀时,函数返回true;否则返回false。例如,isPrefixAndSuffix("aba","ababa")返回true,因为"ab......
  • C语言基础8数组
    什么是数组数组是相同类型,有序数据的集合。数组的特征数组中的数据被称为数组的元素,是同构的数组中的元素存放在内存空间里  衍生概念:下标(索引)下标或索引代表了数组中元素距离第一个元素的偏移位置数组中元素的地址值,下标越大,地址值越大。(每一块内存空间都有一个独有的......
  • LeetCode面试150——238除自身以外数组的乘积
    题目难度:中等默认优化目标:最小化平均时间复杂度。Python默认为Python3。目录1题目描述2题目解析3算法原理及代码实现3.1左右乘积列表参考文献1题目描述给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积......
  • 如何将 f 字符串转换为 .format()?
    我有这个函数,它使用f字符串来打印许多变量:defmyfunc(*args,**kwargs):if'fruit'and'juice'inkwargs:print(f"Ilike{'and'.join(args)}andmyfavoritefruitis{kwargs['fruit']}")print(f"M......
  • 【代码随想录】数组篇
    一、二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。二分查找的前提有序数组,无重复元素二分法的写法1.左闭右闭,即[left,right]而(左<=右)如果nums[mid]>......
  • 【Python】数据类型之字符串
    本篇文章将继续讲解字符串其他功能:1、求字符串长度功能:len(str)  ,该功能是求字符串str的长度。代码演示:2、通过索引获取字符串的字符。功能:str[a]  str为字符串,a为整型。该功能是获取字符串str索引为a处的字符。注意:字符串的索引是从0开始的。代码演示:注意......
  • 2024年暑假关于线段树和树状数组的小知识点
    1.线段树的树形结构使得存储其的数组应开4N,其中N为元素个数2.多用宏定义使代码更简单3.树状数组求逆序对一般会写成add(a[i],1);quiry(a[i]-1);这会导致当元素值域包含0时传入-1导致死循环,可以在quiry函数判断合法性;一种比较好的写法是干脆add时add(a[i]+1,1),然后直接查......
  • shell获取敏感词接口json数据更新时重启nginx+lua环境、一个逐步删除服务器上文件夹的
    一、shell获取敏感词接口json数据如有更新重启nginx+lua环境    因为工作需要,需要写一个shell脚本获取对应接口的数据(其它管理后台控制的敏感词库)。因为当前平台是nginx+lua脚本,重装加载敏感词需要重启nginx.实现起来也很简单,第一点,需要对获取的json数据进行分析,shell......