目录
字符
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%n
int 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];
}
}
}