Java每日一练(20230320)
创始人
2025-05-31 03:43:07
0

目录

1. 两数之和  🌟🌟

2. 盛最多水的容器  🌟🌟

3. 反转链表 II  🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

  • 2 <= nums.length <= 10^3
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9
  • 只会存在一个有效答案
import java.util.*;
public class twoSum {public static class Solution {public static int[] twoSum(int[] nums, int target) {Map cache = new HashMap<>();for (int i = 0; i < nums.length; i++) {int distance = target - nums[i];if (cache.containsKey(distance)) {return new int[] { cache.get(distance), i };} else {cache.put(nums[i], i);}}return new int[] {};}}public static void main(String[] args) {Solution s = new Solution();int nums[] = {2,7,11,5};int res[] = s.twoSum(nums, 9);for (int i = 0; i < res.length; i++) {System.out.print(res[i] + " ");}System.out.println();int nums2[] = {3,2,4};int res2[] = s.twoSum(nums2, 6);for (int i = 0; i < res2.length; i++) {System.out.print(res2[i] + " ");}System.out.println();int nums3[] = {3,3};int res3[] = s.twoSum(nums3, 6);for (int i = 0; i < res3.length; i++) {System.out.print(res3[i] + " ");}System.out.println();}
}

输出:

0 1 
1 2 
0 1 


2. 盛最多水的容器

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器。

示例 1:

输入:[1,8,6,2,5,4,8,3,7]
输出:49 
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

示例 2:

输入:height = [1,1]
输出:1

示例 3:

输入:height = [4,3,2,1,4]
输出:16

示例 4:

输入:height = [1,2,1]
输出:2

提示:

  • n = height.length
  • 2 <= n <= 3 * 10^4
  • 0 <= height[i] <= 3 * 10^4

代码:

import java.util.*;
public class maxArea {public static class Solution {public int maxArea(int[] height) {int N = height.length;int i = 0;int j = N - 1;int max = 0;while (i < j) {int c = (j - i) * Math.min(height[i], height[j]);if (c > max) {max = c;}if (height[i] > height[j]) {j--;} else {i++;}}return max;}}public static void main(String[] args) {Solution s = new Solution();int height[] = {1,8,6,2,5,4,8,3,7};System.out.println(s.maxArea(height));int height2[] = {1,1};System.out.println(s.maxArea(height2));int height3[] = {4,3,2,1,4};System.out.println(s.maxArea(height3));int height4[] = {1,2,1};System.out.println(s.maxArea(height4));}
}

输出:

49
1
16
2


3. 反转链表 II

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]

提示:

  • 链表中节点数目为 n
  • 1 <= n <= 500
  • -500 <= Node.val <= 500
  • 1 <= left <= right <= n

代码:

class Solution {public ListNode reverseBetween(ListNode head, int m, int n) {ListNode dummy = new ListNode(0);dummy.next = head;ListNode pre = dummy;for (int i = 1; i < m; i++) {pre = pre.next;}head = pre.next;for (int i = m; i < n; i++) {ListNode nex = head.next;head.next = nex.next;nex.next = pre.next;pre.next = nex;}return dummy.next;}
}

递归法:

class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        if (left == 1) {
            return reverseN(head, right);
        }
        head.next = reverseBetween(head.next, left - 1, right - 1);
        return head;
    }
    ListNode successor = null; // 后驱节点
    // 反转以 head 为起点的 n 个节点,返回新的头结点
    ListNode reverseN(ListNode head, int n) {
        if (n == 1) {
            successor = head.next;
            return head;
        }
        ListNode last = reverseN(head.next, n - 1);
        head.next.next = head;
        head.next = successor;
        return last;
    }


🌟 每日一练刷题专栏 🌟

✨ 持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

 评论,你的意见是我进步的财富!  

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

相关内容

热门资讯

越来越热闹的大湾区车展:鸿蒙智... 车展首日恰逢端午节第一天,展馆内各大汽车品牌的销售人员高举促销牌来回穿梭,看展的观众人数达到了18....
那些我再也不做的事歌词是怎样的 那些我再也不做的事歌词是怎样的 那些我再也不做的事 演唱:吴克群 我们说好分手不必检讨我们说好记住...
<<金甲虫>... <<金甲虫>>中的有趣的密码 英文中以单词the出现的次数最多。可以根据这个原理察看是否有重复多次的...
中央军委原副主席许其亮逝世 新华社北京6月2日电 中国共产党的优秀党员,久经考验的忠诚的共产主义战士,无产阶级军事家,中国人民解...
ST香雪借贷纠纷:被判需偿还超... 6月2日,ST香雪(维权)(300147)发布公告,近日公司与湖北青松逾越医药有限公司的借贷纠纷案件...
18岁女孩打美容针后全身过敏住... 转自:荔枝新闻 【#18岁女孩打美容针后全身过敏住进IC...
上海端午假期全要素旅游消费金额... 观点网讯:6月2日,上海端午假日文旅市场成绩显著。全要素旅游消费金额达124.77亿元,同比增长3....
候都有哪些成语 候都有哪些成语伺间候隙、 鸡鸣候旦、 伫候佳音、 承颜候色、 恭候台积薪候燎
新股前瞻|盈利拐点遥遥无期,驭...   自动驾驶行业上市潮仍在继续。据披露,一家自动驾驶公司驭势科技(北京)股份有限公司(简称“驭势科技...
董事会主席钱雪明增持创胜集团(... 香港联交所最新资料显示,5月27日,董事会主席钱雪明增持创胜集团(06628)2万股,每股作价1.3...
我可以划船不用浆,我可以扬帆没... 我可以划船不用浆,我可以扬帆没有风向,因为我这一生,全靠浪! 我我可以划船不用浆,我可以扬帆没有风向...
昆仑决每周几直播 几点 什么卫... 昆仑决每周几直播 几点 什么卫视江苏卫视每周六下午3:00
职场人想强大自己如何立志? 职场人想强大自己如何立志?职场人做强做大自己。就要励志。,树立远大的理想和目标。明白目标和理想的实现...
三国平阳是哪里 三国平阳是哪里平阳郡是三国时期魏国设立的,在今天的山西临汾一带
男孩做亲子鉴定后被遗弃幼儿园,... 男孩做亲子鉴定后被遗弃幼儿园,现在人的婚姻到底怎么了?男子跟自己的儿子做完亲子鉴定之后,就将孩子遗弃...
游戏王卡组,,,虽然已经过时,... 游戏王卡组,,,虽然已经过时,谁帮我组一下,要有黑魔导和黑魔导女孩,卡牌40张说实话游戏是很菜的他能...
【魔兽世界】里的 [便携黑洞]... 【魔兽世界】里的 [便携黑洞] 24格包包在哪里买?有声望要求没有?沙塔斯天涯旅店,有个女招待哈莉丝...
合肥市创业免息政策,合肥创业补... 持卡人信用卡逾期后,大部分持卡人将面临高额罚息和银行催收。在巨大的还款压力和频繁的催收中,很多持卡人...
CITIC Securitie... 香港联交所最新资料显示,5月27日,CITIC Securities Company Limited...
红楼梦中鸳鸯是谁的丫鬟 红楼梦中鸳鸯是谁的丫鬟《红楼梦》中鸳鸯是贾母的丫鬟。一、鸳鸯的身份和地位在《红楼梦》中,鸳鸯是贾母的...