题目297.二叉树的序列化与反序列化
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。
请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。
解题思路
采用先序遍历的方式进行,注意需要保留路径中的null节点,保存了之后,仅靠先序遍历就可以完成复原,而不保存就绪要中序遍历作为辅助
代码
1 | /** |
题目1300.转变数组后最接近目标值的数组和
给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。
如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。
请注意,答案不一定是 arr 中的数字。
用例
输入:arr = [4,9,3], target = 10
输出:3
输入:arr = [2,3,5], target = 10
输出:5
输入:arr = [60864,25176,27249,21296,20204], target = 56803
输出:11361
解题思路
思路一:对数组进行排序,结果应该在数组的最小值以及最大值之间,可采用二分法进行遍历寻找答案
思路二:计算前缀和,当目标减前缀和的值除以剩余的数字个数的值,小于当前数字,即可求出结果
不论选择哪种思路,最后都需要对所选值进行判断,因为结果可能高于target,也可能小于target
代码
1 | class Solution { |
1 | class Solution { |
题目14.最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
用例
输入: [“flower”,”flow”,”flight”]
输出: “fl”
输入: [“dog”,”racecar”,”car”]
输出: “”
解题思路
思路一: 纵向对比,找到最长的前缀
思路二: 对字符串数组排序,比较最长字符串与最短字符串的公共前缀长度就可以了
代码
1 | class Solution { |
1 | class Solution { |
发布时间: 2020-06-16
最后更新: 2020-06-16
本文标题: leetcode-day22
本文链接: http://huangketsudou.github.io/2020/06/16/leetcode-day22/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处