java基础题猜单词

java基础题猜单词学习目标 刷完面试经典 150 题 链接 面试经典 150 题 学习内容 快乐数 只出现一次的数字 x 的平方根 位 1 的个数 颠倒二进制位 完全二叉树的节点个数 路径总和 两数之和 存在重复元素 II 学习时间 4 11 今儿就来个大扫荡 把我剩下的简单题全部干掉好了 知识点 学习内容 202 快乐数

大家好,我是讯享网,很高兴认识大家。



学习目标:

  • 刷完面试经典150题
  • 链接: 面试经典150题

学习内容:

    1. 快乐数
    1. 只出现一次的数字
    1. x 的平方根
    1. 位1的个数
    1. 颠倒二进制位
    1. 完全二叉树的节点个数
    1. 路径总和
    1. 两数之和
    1. 存在重复元素 II

学习时间:

知识点

学习内容:

202. 快乐数

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
在这里插入图片描述

说是快乐数,可是仔细做做题,好像也没有那么快乐,哼!

看了题解,有一个快慢指针的思想。很容易理解。

  • 考虑这样一种情况,用sum表示各个位数的和。如果sum始终到不了1,说明一定存在无限循环的情况。如果无限循环,那么在这期间sum一定一直在重复某些值得循环。
  • 所以假设sum的所有取值是一个链表序列
  •   第一种情况:如果sum是无限循环的情况,那么这个链表一定有环。如图所示
    在这里插入图片描述
  •   第二种情况:如果sum不是无限循环的情况,那么这个链表一定没有环,而且最后一个节点一定是1(因为1的平方还是1,后面的序列会一直是1)
    在这里插入图片描述
  • 设置快慢指针,慢指针等于链表序列的第一个元素,快指针等于第二个元素。
  • 停止条件是快慢指针相等,如果相等的值等于1,那么是第二种情况。如果相等的值不等于1,则是第一种情况

代码:

 
讯享网 

136. 只出现一次的数字

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

示例 1 :

输入:nums = [1] 输出:1

代码:

讯享网

69. x 的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x 0.5 。

示例 1:

 

191. 位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。

示例 1:

输入:n = 11 输出:3
解释:输入的二进制串 1011 中,共有 3 个设置位。
示例 2:

输入:n = 128 输出:1
解释:输入的二进制串 中,共有 1 个设置位。
示例 3:

输入:n = 输出:30
解释:输入的二进制串
中,共有 30 个设置位。

讯享网

190. 颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。

提示:

请注意,在某些语言(如> Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数
-。

示例 1:

输入:n = 0000000000 输出:
(0000000000)
解释:输入的二进制串
0000000000 表示无符号整数 ,
因此返回 ,其二进制表示形式为 0000000000。
示例 2:

输入:n = 输出:
()
解释:输入的二进制串
表示无符号整数 ,
因此返回 其二进制表示形式为 。

提示:

输入是一个长度为 32 的二进制字符串

代码:

 

222. 完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第
h 层,则该层包含 1~ 2h 个节点。

示例 1:
Alt

输入:root = [1] 输出:1

如果不考虑时间复杂度这道题还是很简单的。。。

代码:

 

112. 路径总和

叶子节点 是指没有子节点的节点。

示例 1:
https://assets.leetcode.com/uploads/2021/01/18/pathsum1.jpg
Alt

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示。
示例 2:
Alt

输入:root = [1,2,3], targetSum = 5 输出:false
解释:树中存在两条根节点到叶子节点的路径: (1 -->
2): 和为 3 (1 --> 3): 和为 4 不存在 sum = 5 的根节点到叶子节点的路径。
示例 3:

输入:root = [], targetSum = 0 输出:false 解释:由于树是空的,所以不存在根节点到叶子节点的路径。

代码:(记得改成python3)

 

1. 两数之和

 

219. 存在重复元素 II

示例 1:

输入:nums = [1,2,3,1,2,3], k = 2 输出:false

暴力了一把,超时了,,,
改一改~
代码:

 

最后成果

- 202. 快乐数
- 136. 只出现一次的数字
- 69. x 的平方根
- 191. 位1的个数
- 190. 颠倒二进制位
- 222. 完全二叉树的节点个数
- 112. 路径总和
- 1. 两数之和
- 219. 存在重复元素 II

结论

小讯
上一篇 2024-12-26 08:25
下一篇 2024-12-23 17:18

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/3132.html