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

力扣智慧思想小题,目录力扣.跳跃游戏(思想很重要)力扣.跳跃游戏II(还是思想)力扣.分发糖果力扣151.反转字符串中的单词力扣.轮转数组

目录

力扣.跳跃游戏(思想很重要)

力扣.跳跃游戏II(还是思想)

力扣.分发糖果

力扣151.反转字符串中的单词

力扣.轮转数组


字符

a=97

A=65;

JRE:Java运行时候的环境

JDK: JAVA开发套件(工具包)

java原本是.java文件,编译成.class字节码文件

八种基本数据类型:byte,int,,short,long(后面加L或者l),     一个字节=8bit

布尔:boolean

字符:char

小数:float(后面加f或者F),double(浮点数默认 后面加d或者D)

(n=1.2E2(科学计数法,1.2乘10的2次幂)

对于数据精度要求高的 BigDecimal(处理)

力扣.跳跃游戏(思想很重要)

我开始再想,什么方法好,要是暴力遍历,来好几轮,或许可以,但是一定违背这道题的初衷,这个题的思想,是我看看我最远能跳多远,我记录当前这个最远位置,因为假如最远的位置到不了,别的位置也到不了,那么假如最远那个位置之后是0,咋办,其实假如最远的是0,那么就说明0之前的数字,没有能比0更远的,因为在当前位置和0之间还有位置,假如这些位置比0还远,那么就会更新位置,假如没有比0还远,那么就说明到不了0这个位置,换就话,0的前面可能是一堆0,或者到达还是0的位置。

class Solution {public boolean canJump(int[] nums) {int n=nums.length;int maxRight=0;for(int i=0;i<n;i++){if(i<=maxRight){maxRight=Math.max(maxRight,i+nums[i]);if(maxRight>=n-1)return true;}}return false;}
}

力扣.跳跃游戏II(还是思想)

class Solution {public int jump(int[] nums) {int n = nums.length;int end = 0;int maxPosition = 0; int steps = 0;for (int i = 0; i < n - 1; i++) {//不断更新最远位置之后,maxPosition = Math.max(maxPosition, i + nums[i]);     //他的这个end相当于是找到当前位置能到达的最大值,然后,i还是正常走里面,并非一次性跳跃到end,等到i到达end的时候,就步伐++,因为假如这个最大值里面存在一个地方,能够到达更远的地方,那么他的最大位置就会改变,然后当i到达end,相当于咋我都要走这一步,下一步到达的地点是maxPosition,等到达了end,我步骤++,然后到那个最大位置,因为我的最大位置是肯定大于end的,所以我们进行一个更新if (i == end) {end = maxPosition;steps++;}}return steps;}
}

力扣.分发糖果

相邻评分更高,就说明左边也要看,右边也要看,看看是否比自己大

class Solution {public static int candy(int[] ratings) {int n=ratings.length;int []maxR=new int[n];int []maxL=new int[n];//1  1   2   2   3      4//[1,  2,  87  ,87  ,87,  2,  1]for(int i=n-1;i>=0;i--){if(i<n-1&&ratings[i]>ratings[i+1]){maxR[i]=maxR[i+1]+1;}else{maxR[i]=1;}}for(int i=0;i<n;i++){if(i>0&&ratings[i]>ratings[i-1]){maxL[i]=maxL[i-1]+1;}else{maxL[i]=1;}}int max=0;for(int i=0;i<n;i++){max+=Math.max(maxL[i],maxR[i]);}return max;}}

力扣151.反转字符串中的单词

倒着,就拿栈直接操作

class Solution {public static String reverseWords(String s) {String[]ss=s.split(" ");StringBuffer sb=new StringBuffer();int n=ss.length;Stack<String>stack=new Stack<>();for(int i=0;i<n;i++){if(!ss[i].equals("")){stack.add(ss[i]);}}while(!stack.isEmpty()){if(stack.size()!=1){sb.append(stack.pop()+" ");}else  if (stack.size()==1){sb.append(stack.pop());}}return  sb.toString();}
}

力扣.轮转数组

想着去交换来着,但是没必要,不如牺牲点时间,我去把值传递给他们。

class Solution {public static void rotate(int[] nums, int k) {//    i+k%nint n=nums.length;int []b=new int[n];int ret=0;int i=0;while(ret<n) {int t=nums[i];b[(i+k)%n]=t;i++;ret++;}i=0;for(;i<n;i++){nums[i]=b[i];}}
}

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

相关文章:

  • cat、more和less的区别
  • 趣味编程:答案之书
  • CSS动画
  • AI视频生成的艺术:镜头语言
  • 多模态大语言模型arxiv论文略读(六十四)
  • 算法每日一题 | 入门-分支结构-Apples Prologue/苹果和虫子
  • DevExtreme JS ASP.NET Core v25.1新功能预览 - 全新的Stepper组件
  • 《函数基本语法》
  • 标准 PVT (Process-Voltage-Temperature) 签核矩阵
  • VBA -- 学习Day2
  • Linux常用命令34——uname显示系统内核信息
  • P2415 集合求和 详解
  • idea出现tomcat不能正确部署的问题--解决方案2
  • 前端面试每日三题 - Day 28
  • OpenCV CPU性能优化
  • 【文档智能】开源的阅读顺序(Layoutreader)模型使用指南
  • 可变参数包 和 lambda表达式
  • 代码简洁之道
  • 公链钱包开发:技术逻辑与产品设计实践
  • 21、魔法传送阵——React 19 文件上传优化
  • 【Dv3Admin】Git 子模块在 Dv3admin 插件项目统一管理实践
  • SpringBoot的自动配置功能-笔记
  • 智能边缘计算系统:基于Python的创新应用
  • python3连接数据库工具类之Oracle
  • Day19 常见的特征筛选算法
  • 零拷贝的简单复习
  • Python变量作用域
  • C PRIMER PLUS——第6-2节:二维数组与多维数组
  • nginx 实现动静分离
  • 火影bug,未保证短时间数据一致性,拿这个例子讲一下Redis