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

面试经典150题(93-95)

leetcode 150道题 计划花两个月时候刷完,今天(第五十三天)完成了3道(93-95)150:

93.(53. 最大子数组和)题目描述:

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。

第一版(这题我是一次写出来的,只不过我用了dp数组,没想到只用一个变量记录就行其他的都一样,那就看看我的代码吧,dp[i] 意思是数组到 i 结束 )

class Solution {public int maxSubArray(int[] nums) {int len=nums.length;if(len<=1){return nums[0];}int[] dp=new int[len];int max=nums[0];dp[0]=nums[0];for(int i=1;i<len;i++){if(dp[i-1]<0){dp[i]=nums[i];}else{dp[i]=nums[i]+dp[i-1];}max=Math.max(max,dp[i]);}return max;}
}

94.(918. 环形子数组的最大和)题目描述:

给定一个长度为 n 的环形整数数组 nums ,返回 nums 的非空 子数组 的最大可能和 。
环形数组 意味着数组的末端将会与开头相连呈环状。形式上, nums[i] 的下一个元素是 nums[(i + 1) % n] , nums[i] 的前一个元素是 nums[(i - 1 + n) % n] 。
子数组 最多只能包含固定缓冲区 nums 中的每个元素一次。形式上,对于子数组 nums[i], nums[i + 1], ..., nums[j] ,不存在 i <= k1, k2 <= j 其中 k1 % n == k2 % n 。

第一版(这个题我感觉有点难度,没想出来,看了解题)

class Solution {public int maxSubarraySumCircular(int[] nums) {int len=nums.length;if(len<=1){return nums[0];}int max=nums[0];int min=nums[0];int sum=nums[0];int preMax=nums[0];int preMin=nums[0];for(int i=1;i<len;i++){preMax=Math.max(nums[i]+preMax,nums[i]);preMin=Math.min(nums[i]+preMin,nums[i]);sum+=nums[i];max=Math.max(max,preMax);min=Math.min(min,preMin);}// 算一下有环的最大值return max>0?Math.max(max,sum-min):max;}
}

95.(35. 搜索插入位置)题目描述:

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。

第一版(这个题说实话应该很难,虽然我能偶尔写出来,但是我不知道啥时候应该给right=len 还是 right=len-1 还有while 结束条件 啥时候该有等号,啥时候不该有。。。不知道哪里有总结可以学习一下)

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

连着一周没开电脑了。。首先是冷这几天降温了房子里和冰箱一样。。还有就是变懒了。。变懒是最主要的。。

加油,早日跳槽!!!

相关文章:

  • 长度最小的子数组[中等]
  • python学习4
  • 低代码
  • JavaScript-for循环的执行顺序
  • 数论与图论
  • C++ 特殊成员函数:默认构造函数、默认析构函数、复制构造函数、赋值运算符
  • 华为C++笔试--拓扑排序
  • html css实现钟表简单移动
  • 山海鲸可视化:工厂运营的智慧之眼
  • Bug: git stash恢复误drop的提交
  • 25考研北大软微该怎么做?
  • mysql 正则表达式用法(一)
  • 【基础算法练习】Trie 树
  • 【算法专题】贪心算法
  • git的分支操作
  • 【node学习】协程
  • Codepen 每日精选(2018-3-25)
  • cookie和session
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Flannel解读
  • JAVA_NIO系列——Channel和Buffer详解
  • Javascript基础之Array数组API
  • Java多态
  • java概述
  • java取消线程实例
  • node和express搭建代理服务器(源码)
  • orm2 中文文档 3.1 模型属性
  • PHP CLI应用的调试原理
  • sessionStorage和localStorage
  • Spring声明式事务管理之一:五大属性分析
  • webpack4 一点通
  • 从零开始的无人驾驶 1
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 阿里云重庆大学大数据训练营落地分享
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #图像处理
  • %@ page import=%的用法
  • (1)虚拟机的安装与使用,linux系统安装
  • (javascript)再说document.body.scrollTop的使用问题
  • (八)Spring源码解析:Spring MVC
  • (搬运以学习)flask 上下文的实现
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (规划)24届春招和25届暑假实习路线准备规划
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十一)手动添加用户和文件的特殊权限
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)C#调用WebService 基础
  • (转)shell调试方法
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • **CI中自动类加载的用法总结