Java习题算法
文章平均质量分 68
L_cl
一切都会好的
展开
-
数据结构与算法 二分查找有关算法题
给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。numstarget= 949 出现在nums中并且下标为 4numstarget= 2-12 不存在nums中因此返回 -11.你可以假设nums中的所有元素是不重复的。2.n将在[1, 10000]之间。3.nums的每个元素都将在之间。原创 2024-08-31 21:38:15 · 554 阅读 · 0 评论 -
数据结构与算法——Java实现 3.二分查找——Java版
1,是为了避免在第一个位置插入时,返回0与查找元素刚好处在第一个位置重复的这种情况,+1可以分辨这两种情况,观察是否返回的是负数。若在目标数组中找不到元素,则返回的是负的(插入该点的位置+1)当数组中存在多个待查找的元素时,观察寻找最左侧元素的位置。当数组中存在多个待查找的元素时,观察寻找最右侧元素的位置。当数组中存在多个待查找的元素时,观察寻找最左侧元素的位置。若是找到则返回元素位置,若是找不到则返回插入时的插入位置。当数组中存在多个待查找的元素时,观察寻找最右侧元素的位置。原创 2024-08-31 18:40:02 · 764 阅读 · 0 评论 -
重学java 63.IO流 字节流 ④ 文件复制
> 将读到的字节写到指定的位置。原创 2024-06-04 22:11:32 · 481 阅读 · 0 评论 -
重学Java 15.面向对象.3.数组常用算法
数组常见算法我走过漫漫求学路大雪落在求知所依靠的心脏上昨日种种我弃之如敝履滚滚洪流中,毁灭自己——24.2.18数组常见算法1.数组翻转2.冒泡排序3.二分查找。原创 2024-02-18 16:20:06 · 403 阅读 · 0 评论 -
力扣由浅至深 总结
在之前的二十三天中,将数组和指针部分的简单算法题进行了练习,在之后的日子中,决定先复习数据结构的内容,在数据结构复习完毕后,再进行算法题的练习。原创 2024-04-08 17:20:22 · 173 阅读 · 0 评论 -
力扣由浅至深 每日一题.23 Nim 游戏
你和你的朋友,两个人一起玩假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为n的情况下赢得游戏。如果可以赢,返回true;否则,返回false。n = 4false以下是可能的结果:1. 移除1颗石头。你的朋友移走了3块石头,包括最后一块。你的朋友赢了。2. 移除2个石子。你的朋友移走2块石头,包括最后一块。你的朋友赢了。3.你移走3颗石子。你的朋友移走了最后一块石头。你的朋友赢了。在所有结果中,你的朋友是赢家。原创 2024-04-07 11:42:41 · 821 阅读 · 0 评论 -
力扣由浅至深 每日一题.22 移除链表元素
迄今为止的生命里—— 24.4.4给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。原创 2024-04-04 10:25:47 · 286 阅读 · 1 评论 -
力扣由浅至深 每日一题.21 只出现了一次的数字
给你一个整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。原创 2024-04-03 15:25:57 · 433 阅读 · 0 评论 -
力扣由浅至深 每日一题.20 环形链表
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。原创 2024-04-03 15:16:52 · 1014 阅读 · 0 评论 -
力扣由浅至深 每日一题.19 验证回文串
如果在将所有大写字符为小写字符、并移除所有之后,短语正着读和反着读都一样。则可以认为该短语是一个。字母和数字都属于字母数字字符。给你一个字符串s,如果它是,返回true;否则,返回false。true"amanaplanacanalpanama" 是回文串。false"raceacar" 不是回文串。s = " "true在移除非字母数字字符之后,s 是一个空字符串 ""。由于空字符串正着反着读都一样,所以是回文串。原创 2024-03-30 09:41:04 · 473 阅读 · 0 评论 -
力扣由浅至深 每日一题.18 买卖股票的最佳时机
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。5在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。0。原创 2024-03-29 16:04:14 · 244 阅读 · 0 评论 -
力扣由浅至深 每日一题.17 杨辉三角
给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。[[1]]原创 2024-03-28 13:56:28 · 820 阅读 · 0 评论 -
力扣由浅至深 每日一题.16 合并两个有序数组
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。方法一:直接合并后排序最直观的方法是先将数组 nums2放进数组 nums1的尾部,然后直接对整个数组进行排序。原创 2024-03-27 18:03:08 · 810 阅读 · 0 评论 -
力扣由浅至深 每日一题.15 删除排序链表中的重复元素
当我们遍历到链表的最后一个节点时,cur.next 为空节点,如果不加以判断,访问 cur.next 对应的元素会产生运行错误。当 cur.val 和 cur.next.val 相等时说明需要去重,则将 cur 的下一个指针指向下一个的下一个,这样就能达到去重复的效果。如果当前 cur 与 cur.next 对应的元素相同,那么我们就将 cur.next 从链表中。否则说明链表中已经不存在其它与 cur 对应的元素相同的节点,因此可以。的,因此重复的元素在链表中出现的位置是。时间复杂度:O(n)原创 2024-03-26 13:35:01 · 373 阅读 · 0 评论 -
力扣由浅至深 每日一题.14 爬楼梯
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?原创 2024-03-25 21:13:03 · 893 阅读 · 1 评论 -
力扣由浅至深 每日一题.13 x的平方根
给你一个非负整数x,计算并返回x的。由于返回类型是整数,结果只保留,小数部分将被不允许使用任何内置指数函数和算符,例如或者x ** 0.5。注:是小数部分都被舍去,不是四舍五入。原创 2024-03-24 08:29:03 · 394 阅读 · 0 评论 -
力扣由浅至深 每日一题.12 二进制求和
给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。原创 2024-03-23 09:39:34 · 337 阅读 · 0 评论 -
力扣由浅至深 每日一题.11 加一
给定一个由组成的数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储数字。你可以假设除了整数 0 之外,这个整数不会以零开头。原创 2024-03-22 20:36:13 · 345 阅读 · 0 评论 -
力扣由浅至深 每日一题.10 最后一个单词的长度
单词的长度原创 2024-03-21 18:58:15 · 447 阅读 · 0 评论 -
力扣由浅至深 每日一题.09 找出字符串中第一个匹配项的下标
方法二 Knuth-Morris-Pratt算法 KMP算法原创 2024-03-20 21:48:31 · 453 阅读 · 0 评论 -
力扣由浅至深 每日一题.08 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。214。原创 2024-03-18 22:27:49 · 543 阅读 · 0 评论 -
力扣由浅至深 每日一题.07 移除元素
由于题目要求删除数组中等于 val 的元素,因此输出数组的长度一定小于等于输入数组的长度,我们可以把输出的数组直接写在输入数组上。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。如果右指针指向的元素不等于 val,它一定是输出数组的一个元素,我们就将右指针指向的元素复制到左指针位置,然后将左右指针同时右移;如果右指针指向的元素等于 val,它不能在输出数组里,此时左指针不动,右指针右移一位。的元素,并返回移除后数组的新长度。原创 2024-03-17 22:26:30 · 492 阅读 · 0 评论 -
力扣由浅至深 每日一题.06 删除有序数组中的重复项
提示给你一个的数组nums,请你删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsnumsk系统会用下面的代码来测试你的题解:// 输入数组// 长度正确的期望答案// 调用i < k;i++) {如果所有断言都通过,那么您的题解将被。函数应该返回新的长度2,并且原数组nums, 2不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度。原创 2024-03-16 08:27:48 · 1096 阅读 · 0 评论 -
力扣由浅至深 每日一题.05 合并两个有序列表
将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。[][0]l2。原创 2024-03-13 21:34:25 · 1453 阅读 · 1 评论 -
力扣由浅至深 每日一题.04 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。"fl"""输入不存在公共前缀。原创 2024-03-12 22:07:37 · 423 阅读 · 0 评论 -
力扣由浅至深 每日一题.03 罗马数字转整数
简单题罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给定一个罗马数字,将其转换成整数。原创 2024-03-11 16:09:52 · 1210 阅读 · 0 评论 -
力扣由浅至深 每日一题.02 回文数
题目:给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。121123。原创 2024-03-10 22:10:15 · 654 阅读 · 0 评论 -
力扣由浅至深 每日一题.01 两数之和
当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x。对数组进行遍历,对数组中每一个值都进行二次遍历,二分查找遍历寻找有没有和他相加和为目标值的数,如果有则返回两数的下标,如果没有则进行下一个数的遍历。最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。整数,并返回它们的数组下标。原创 2024-03-09 22:32:39 · 428 阅读 · 0 评论 -
C语言 每日一题 牛客网 11.12 Day16
牛牛试图给一个长度为 n 整数数组排序,即实现一个 void sort(int *array,int n)原创 2023-11-12 21:46:57 · 708 阅读 · 1 评论 -
Java学习 10.Java-数组习题
传定数组,通过for循环,定义变量,对每一个数再for循环进行遍历,如果有重复的数则再加一,最后判定重复的次数是否大于数组长度的一半,如果是则返回这个重复的数。遍历数组,通过异或^运算,返回元素,因为只有一个元素只出现一次以外,其余元素都出现两次,所以进行遍历,因为a^a=0,异或卡在哪里,则哪个元素位置在哪里。传入数组,得到数组长度,将数组长度赋值给新数组长度,用数组长度进行遍历,将数组中每一个元素赋值给新数组的元素,最后返回新数组。遍历数组元素,当数组元素与给出的目标值相等时返回该数组元素下标。原创 2023-11-11 23:04:32 · 935 阅读 · 5 评论 -
Java学习 9.Java-数组 讲解及习题
所谓的“引用“本质上只是存了一个地址,java将数组设定为引用类型,这样的话后续进行数组参数传参,其实只是将数组的地址传入搭配函数形参中,这样可以避免对整个数组的拷贝(数组如果较长,拷贝的开销就很大)原创 2023-11-11 20:34:24 · 279 阅读 · 3 评论 -
Java学习 3. 习题 1.
1.2.3.4.5.原创 2023-10-26 19:19:10 · 152 阅读 · 3 评论 -
Java学习 5.习题2.
System.out.println("请输入一个年份");=0)){System.out.println(year+"是一个普通闰年");System.out.println(year+"是一个世纪闰年");}else{System.out.println(year+"不是闰年");int a = 1;a++;//条件要发生变化,不然会死循环。原创 2023-10-28 10:59:05 · 429 阅读 · 7 评论 -
Java学习 6.循环习题
【代码】Java学习 6.循环习题。原创 2023-10-30 20:53:35 · 128 阅读 · 3 评论 -
Java学习 8.方法习题
循环递归先从1到N相乘,求出每一项的阶乘,在定义变量将它们相加。原创 2023-10-31 11:41:40 · 111 阅读 · 3 评论 -
Java学习 8.Java-递归
一个方法在执行过程中调用自身,就称为递归(函数自己调用自己)递归相当于数学的数学归纳法,有一个起始条件,有一个递推公式。原创 2023-11-09 20:55:07 · 204 阅读 · 0 评论