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

每日算法刷题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方法

http://www.xdnf.cn/news/5211.html

相关文章:

  • Paging 3.0 + Kotlin 分页加载指南
  • 用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本2
  • 实验四:网络编程
  • localStorage和sessionStorage
  • Day28 -js开发01 -JS三个实例:文件上传 登录验证 购物商城 ---逻辑漏洞复现 及 判断js的payload思路
  • [Linux网络_71] NAT技术 | 正反代理 | 网络协议总结 | 五种IO模型
  • 好用的播放器推荐
  • 蓝桥杯嵌入式第十一届省赛真题
  • Python企业级OCR实战开发:从基础识别到智能应用
  • 健康养生:开启活力生活的密码
  • JGL066生活垃圾滚筒筛分选机实验装置
  • MAD-TD: MODEL-AUGMENTED DATA STABILIZES HIGH UPDATE RATIO RL
  • Ubuntu22.04安装显卡驱动/卸载显卡驱动
  • JDBC工具类的三个版本
  • Windows系统Jenkins企业级实战
  • Redis经典面试题
  • 数据库实验10
  • 【经验总结】Ubuntu 22.04.5 LTS 将内核从5.15.0-140 升级到6.8.0-60后纽曼无线网卡无法使用解决措施
  • C++ 命令模式详解
  • R 语言科研绘图 --- 桑基图-汇总
  • Python网络爬虫:从入门到实践
  • uniapp-商城-51-后台 商家信息(logo处理)
  • 33号远征队 - SDKDump
  • Spring 必会之微服务篇(2)
  • 前端进化论·JavaScript 篇 · 数据类型
  • [学习]RTKLib详解:sbas.c与rtcm.c
  • Linux 阻塞和非阻塞 I/O 简明指南
  • [架构之美]linux常见故障问题解决方案(十九)
  • 数据结构与算法分析实验11 实现顺序查找表
  • vue注册用户使用v-model实现数据双向绑定