如何做网站背景,邢台房产信息网58同城,哈尔滨造价信息网官网,服务器如何建设多个网站1、#xff08;两数之和#xff09;#xff1a;
这段代码是针对力扣#xff08;LeetCode#xff09;上的“两数之和”问题。它提供了一个Java类Solution#xff0c;其中包含一个方法twoSum#xff0c;该方法接收一个整数数组nums和一个整数目标值target。目的是找出数组…1、两数之和
这段代码是针对力扣LeetCode上的“两数之和”问题。它提供了一个Java类Solution其中包含一个方法twoSum该方法接收一个整数数组nums和一个整数目标值target。目的是找出数组中两个整数的和等于目标值target并返回这两个整数的数组下标。
代码中首先定义了一个HashMapInteger, Integer用来存储数组中的每个数字及其对应的下标。然后通过遍历数组对于每个元素检查HashMap中是否存在一个值使得这个值与当前元素的和等于目标值target。如果存在就将对应的下标和当前元素的下标存入数组ans中并中断循环。最后返回ans数组。
这段代码使用了哈希表来优化查找过程使得算法的时间复杂度为O(n)而不是暴力解法的O(n^2)。
2、两数相加
这段代码是针对力扣LeetCode上的“两数相加”问题。它提供了一个Java类Solution其中包含一个方法addTwoNumbers该方法接收两个表示非负整数的链表l1和l2。这些整数是逆序存储的每个节点存储一位数字。
addTwoNumbers方法首先初始化了头结点head和尾结点tail并定义了一个变量carry来存储进位。然后它使用一个循环来遍历两个链表直到两个链表都遍历完毕。在每次循环中它计算两个链表当前节点的值加上进位的和然后更新进位carry。接着它创建一个新的链表节点其值为sum % 10即和的个位数并将其链接到结果链表的末尾。如果head为null说明这是结果链表的第一个节点因此同时更新head和tail否则只更新tail。
循环结束后如果还有进位carry 0则在链表末尾添加一个新的节点其值为carry。最后返回头结点head它指向表示两个数之和的链表。
这段代码通过模拟加法运算的过程逐位相加并处理进位从而实现了两个链表表示的整数相加的功能。
package Code1;import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;/*** description 两数之和* level 简单* score* url https://leetcode.cn/problems/two-sum/description/*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);}
}class Solution {public int[] twoSum(int[] nums, int target) {//转为Listint[] ans new int[2];//暴力//for (int i 0; i nums.length; i) {// for (int j i 1; j nums.length; j) {// if (nums[i] nums[j] target) {// ans new int[]{i, j};// break;// }// }//}//使用哈希表 数字对应下标HashMapInteger, Integer map new HashMap();for (int i 0; i nums.length; i) {//如果存在对应结果if (map.containsKey(target - nums[i])) {ans new int[]{map.get(target - nums[i]), i};break;}map.put(nums[i], i);}return ans;}
}package Code2;import java.util.Scanner;/*** description 两数相加* level 中等* score* url https://leetcode.cn/problems/add-two-numbers/description/*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);}
}/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//头结点尾结点ListNode head null, tail null;//进位int carry 0;while (l1 ! null || l2 ! null) {int x l1 null ? 0 : l1.val;int y l2 null ? 0 : l2.val;int sum x y carry;carry sum / 10;//初始化头节点和尾结点是同一个节点if (head null) {head tail new ListNode(sum % 10);} else {//否则就加在尾结点后面tail.next new ListNode(sum % 10);tail tail.next;}//遍历l1下一个节点if (l1 ! null) {l1 l1.next;}//遍历l2下一个节点if (l2 ! null) {l2 l2.next;}}//如果最后还有进位if (carry 0) {tail.next new ListNode(carry);tail tail.next;}return head;}public static class ListNode {int val;ListNode next;public ListNode(int val) {this.val val;}public ListNode(int val, ListNode next) {this.val val;this.next next;}}
}