2023

您所在的位置:网站首页 三目运算符java 2023

2023

2023-07-07 23:58| 来源: 网络整理| 查看: 265

目录待处理刷题中常用的Java方法常见的数据类型常见的转义字符自增操作i++创建string数组操作创建int[] nums元素插入数组操作---addSystem.arraycopy函数一些稀奇古怪的省略for(;;)a&=b? :数组:二分法二分法搜索插入位置27.移除元素59.螺旋矩阵II滑动窗口双指针杂项链表哈希表Map接口的方法字符串双指针法栈与队列二叉树回溯&递归贪心算法动态规划斐波那契数列(滚动数组)单调栈按照LeetCode标签记录链接 https://programmercarl.com/

待处理

周赛 6242

class Main{ public static void main(String[] args) { Solution s = new Solution(); } } 刷题中常用的Java方法 常见的数据类型 // 1. char 和String // char s1="n";错误,char需要单引号 // char s1='nl';错误,char是一个字符 char s1='n';正确 // String s2='asdasd'; 错误,string 是双引号 String s2="asdasdasd";正确 // 2. long型 /* 系统不会自动将99999999999999当做long处理,而是当做int处理,而本身99999999999999超出int范围,故赋值失败 */ //long num1=99999999999999; /* 如果希望系统将99999999999999当做long处理,则需要在常量值后面添加l或L后缀 */ long num1=99999999999999L; // 3. float型 如果希望系统将1.5当做float处理,则需要在常量值后添加f或F后缀 float f2=1.5f; 常见的转义字符 转义字符 说明 \b 退格符 \n 换行符 \r 回车符 \t 制表符 \” 双引号 \‘ 单引号 自增操作i++ //格式1:运算符在操作数左边 /* 先将i自增1,然后赋值给j */ int i = 10; int j = ++i; System.out.println("i=" + i + "\tj=" + j);//i=11 j=11 //格式2:运算符在操作数右边 /* 现将i本身的值取出来放在操作数栈中,然后i自增1,再用操作数栈中的10赋值给j */ int i = 10; int j = i++; System.out.println("i=" + i + "\tj=" + j);//i=11 j=10 //格式3:混合运算 int i = 10; int j = (i++) + (++i) * (i++);//j=10+12*12 System.out.println("i=" + i + "\tj=" + j);//i=13,j=154 创建string //方式一:通过字符串常量的方式 String str1 = "joshua317"; //方式二:通过new一个对象方式创建 String str2 = new String("joshua317"); 数组操作 创建int[] nums //创建int[] nums int[] nums = {1,3,5,2,5,1,2,3,4,5,7}; 元素插入数组操作---add public class Solution { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(0);//插入第一个元素 list.add(1); System.out.println(list);//打印list数组 System.out.println(list); } } System.arraycopy函数 //System.arraycopy(src, srcPos, dest, destPos, length); public class Solution { public static void main(String[] args) { // 源数组 int[] src = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 目标数组 int[] dest = new int[10]; System.out.println("cope前:" + Arrays.toString(dest));//cope前:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] // copy(src, 2, dest, 5, 4); System.arraycopy(src, 2, dest, 5, 4); System.out.println("cope后:" + Arrays.toString(dest));//cope后:[0, 0, 0, 0, 0, 3, 4, 5, 6, 0] } } 一些稀奇古怪的省略 for(;;) /*while(true) 和for(;;)是一样的 for(;;) 即不设初值,不判断条件,循环变量不增值. 无终止的循环。 那个程序会死循环 可以在循环中添加一个语句来说明这个问题*/ for(;;){ System.out.println("aa"); } //会一直输出 字符串 aa a&=b

“&=”是JavaScript赋值运算符,意思是将左边变量与右操作数的值按位与。如,a&=b,相当于a=a&b。等号“=”就是赋值用的。而&是JavaScript的位运算符,是按位与的意思, 就是当两个操作数的相应位都为1时,该位的结果为1,否则为0。

? :

条件运算符( ? : )也称为 “三元运算符”或“三目运算符”。语法形式:布尔表达式 ? 表达式1 :表达式2。 运算过程:如果布尔表达式的值为 true ,则返回 表达式1的值,否则返回 表达式2 的值。

数组:

2022-11-19----

二分法 E367 class Solution { public boolean isPerfectSquare(int num) { int left=0; int right=num; while (left>1); long square=(long)mid *mid; if (squarenum){ right=mid-1; }else { return true; } } if (left*left==num){ return true; }else { return false; } // return false; } } // E35 class Solution { public int searchInsert(int[] nums, int target) { int left=0; int right=nums.length-1; while(left>1)+left; if(target==nums[mid]){ return mid; } else if (nums[mid]1); if(nums[middle]> 1); /* 1先小于 left=middle+1 2等于时,middle=left 3小于时,right=middle-1 */ if (nums[middle] < target) { left = middle + 1; } else if (nums[middle] == target) { right = middle; } else { right = middle - 1; } } /*循环完之后,left可能落在target,也可能 left > right都没找到 所以返回-1 */ if (nums[left] == target) { return left; } else { return -1; } } private int findLastPosition(int[] nums, int target) { int left = 0; int right = nums.length - 1; while (left < right) { int middle = ((left + right +1) >> 1);//向上取整的精妙之处需要体会 /* 1先小于 left=middle+1 2等于时,middle=left 3小于时,right=middle-1 */ if (nums[middle] < target) { left = middle + 1; } else if (nums[middle] == target) { left = middle; } else { right = middle - 1; } } return left; } } class Main{ public static void main(String[] args) { int []nums = {5,7,7,8,8,10}; int target = 8; Solution s = new Solution(); int[] res = s.searchRange(nums, target); // System.out.println(res); for(int a:res)System.out.println(a);//数组输出的格式for } } E69 可用二分法再做一遍 二分法搜索插入位置 /* 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 */ class Solution { public int searchInsert(int[] nums, int target) { int left=0,right=nums.length; while(left


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3