二叉树的中序遍历、两数之和、整数反转

文章讨论了如何在给定整数数组中找到两个数,其和等于目标值,要求返回这两个数的下标。提供了两种解法,包括暴力搜索和使用哈希表优化的时间复杂度低于O(n^2)的方法,并提到了一个关于整数反转的编程问题及其实现。最后提及了互联网大厂面试题中的技术点整理视频资源。
摘要由CSDN通过智能技术生成

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 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]

**进阶:**你可以想出一个时间复杂度小于 O(n2) 的算法吗?

小编菜解

/**

  • 输入:nums = [2,7,11,15], target = 9

  • 输出:[0,1]

  • 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

*/

public static int[] twoSum(int[] nums, int target) {

int[] ret = new int[2];

for(int i = 0;i<nums.length;i++){

for (int j = 0; j < nums.length - 1; j++) {

if((nums[i] + nums[j]) == target){

ret[0] = i;

ret[1] = j;

return ret;

}

}

}

return null;

}

大神解法

private static Map<Integer, Integer> map = new HashMap<Integer, Integer>();

public static int[] twoSumByMap(int[] nums, int target) {

int[] indexs = new int[2];

for (int i = 0; i < nums.length; i++) {

if(map.containsKey(nums[i])){

indexs[0] = i;

indexs[1] = map.get(nums[i]);

}

map.put(target - nums[i],i);

}

return indexs;

}

3、LeetCode.7 整数反转


题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

小编菜解

private static int reverse01(int param){

String fh = “”;

String str = String.valueOf(param);

StringBuilder builder = null;

if(param < 0){

fh = “-”;

builder = new StringBuilder(str.substring(1));

}else{

builder = new StringBuilder(str);

}

String value = builder.reverse().toString();

return Integer.parseInt(fh + Integer.parseInt(value)😉;

}

提交失败,存在 Exception in thread “main” java.lang.NumberFormatException: For input string: "9646324351"问题

解题思路

// 弹出 x 的末尾数字 digit

digit = x % 10

x /= 10

// 将数字 digit 推入 rev 末尾

rev = rev * 10 + digit

大神解法

private static int reverse02(int x){

int result = 0;

while(x != 0) {

int tmp = result; // 保存计算之前的结果

result = (result * 10) + (x % 10);

x /= 10;

// 将计算之后的结果 / 10,判断是否与计算之前相同,如果不同,证明发生溢出,返回0

if (result / 10 != tmp) return 0;

}

return result;

}

🔥联系作者,或者扫作者主页二维码加群,加入我们吧🔥
下一篇:【100天算法入门 - 每日三题 - Day2】二分查找、第一个错误的版本、搜索插入位置

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

[外链图片转存中…(img-eA7kI4mc-1713465883783)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值