当前位置: 首页 > news >正文

每日算法刷题Day1 5.9:leetcode数组3道题,用时1h

1.LC寻找数组的中心索引(简单)

数组和字符串 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台

思想:

计算总和和左侧和,要让左侧和等于右侧和,即左侧和=总和-左侧和-当前数字

代码

c++代码:

class Solution {
public:int pivotIndex(vector<int>& nums) {int sum=0,leftSum=0;for(auto x:nums)    sum+=x;for(int i=0;i<nums.size();i++){if(leftSum*2+nums[i]==sum)  return i;leftSum+=nums[i];}return -1;}
};

python代码:

class Solution:def pivotIndex(self, nums: List[int]) -> int:totalSum=sum(nums) #sum是内置函数leftSum=0for i in range(len(nums)):if leftSum*2+nums[i]==totalSum:return ileftSum+=nums[i]return -1

sum是内置函数,用于对可迭代对象中所有元素求和,比如 listtupleset

相似题

1991. 找到数组的中间位置 - 力扣(LeetCode)
724. 寻找数组的中心下标 - 力扣(LeetCode)

2.LC 搜索插入位置(简单)

数组和字符串 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台
35. 搜索插入位置 - 力扣(LeetCode)

思路

二分搜索,res初始值为n(找不到插最后面)

代码

c++

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int n=nums.size();int left=0,right=n-1,res=n;while(left<=right){int mid=left+((right-left)>>1);if(nums[mid]==target)   return mid;else if(nums[mid]<target){left=mid+1;}else{right=mid-1;res=mid;}}return res;}
};

python:

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:n = len(nums)left, right, res = 0, n - 1, nwhile left <= right:mid = left + ((right - left) >> 1)if nums[mid] == target:return midelif nums[mid] > target:right = mid - 1res = midelse:left = mid + 1return res
3.LC 合并区间(中等,学习)

56. 合并区间 - 力扣(LeetCode)

思想:

先按照区间的左端点排序,使得合并区间一定是连续的
然后再定义一个二维数组res储存结果,若res数组为空,则放入元素,若待放入元素左端点大于res数组最后一个元组右端点,则放入数组,否则出现重叠,更新res数组最后一个元素右端点

代码

c++:

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.size() == 0)return {};sort(intervals.begin(), intervals.end());vector<vector<int>> res;for (int i = 0; i < intervals.size(); ++i) {int left = intervals[i][0], right = intervals[i][1];if (!res.size() || res.back()[1] < left)res.push_back({left, right});elseres.back()[1] = max(res.back()[1], right);}return res;}
};

python:

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x: x[0])res = []for interval in intervals:left,right=interval[0],interval[1]if not res or res[-1][1]<left:res.append(interval)else:res[-1][1]=max(res[-1][1],right)return res

1..sort(key=)方法,key传入一个函数参数
2.lambda x: x[0]匿名函数,传入x,返回x[0]
3.-1为List最后一个元素索引
4.判断res无元素:not res
5.List的append方法

相关文章:

  • [6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)
  • (四)毛子整洁架构(Presentation层/Authentiacation)
  • 问题解决思路:numpy:DLL load failed
  • QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
  • AUTODL Chatglm2 langchain 部署大模型聊天助手
  • 《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-《打砖块:向量反射与实时物理模拟》MATLAB教程
  • 【数据结构与算法】图的基本概念与遍历
  • 离线化 Service Worker
  • yocto的大致工作流程
  • [SV]等待32个instance的某一个信号的pulse,该怎么写?
  • 【LeetCode 热题 100】215. 数组中的第K个最大元素(Python 快速选择详解)
  • 探索C++内存管理
  • UE5 PCG学习笔记
  • 初等数论--莫比乌斯反演
  • 【数据结构入门训练DAY-30】数的划分
  • STM32F103单片机在不需要使用 JTAG 调试接口的情况下,释放引脚给其他功能使用。
  • React Hooks 精要:从入门到精通的进阶之路
  • TWAS、GWAS、FUSION
  • 【读书笔记】《编码:隐匿在计算机软硬件背后的语言》01 逻辑与开关
  • 【单片机毕业设计16-基于stm32c8t6的智慧交通灯系统设计】
  • “春申阡陌”漆画展:将传统漆艺融入现代创作
  • 邯郸一酒店办婚宴发生火灾,新郎母亲:饭没吃成酒店还要收费
  • 图集︱“中国排面”威武亮相
  • 沃旭能源因成本上升放弃英国海上风电项目,或损失近40亿元
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 浙江一民企拍地后遭政府两次违约,“民告官”三年又提起民事诉讼