2020.04.08笔记

2020.04.08 笔记

leetcode1 NO.1 两数之和

  • 题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
  • 解答一:遍历法。两层for循环嵌套相加得和。符合则返回数组。时间复杂度1n平方(每个元素遍历数组一次n*n)空间复杂度1(没有使用额外的空间)
  • 解答二:hash表遍历优化。先遍历一遍存入hash表,再遍历从hash表中查找。由于hash表的时间复杂度为1。总时间复杂度为max(n,n)=n,空间复杂度为n
  • 解答三:hash表的再优化。一边存入一边判断原有元素是否符合条件。时间复杂度n*1=n,空间复杂度为n

leetcode2 NO.26 删除排序数组中的重复项

  • 题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。
  • 解答一:自己解答。遍历数组,由于是排序数组,把相同的数字直接舍弃,不同数字往前存放即可。但是数组本身不是正确数组,超出长度部分是原先的数组。
class Solution {
    public int removeDuplicates(int[] nums) {
        int newArrayNum = 1;
        for(int i = 1; i < nums.length; i++){
            if(nums[i] == nums[i-1]){
                continue;
            }else{
                nums[newArrayNum] = nums[i];
                newArrayNum++;
            }
        }
        return newArrayNum;
    }
}
  • 解答优化:并无太多优化空间

软件设计师1.1-1.3

  • 十进制转二进制
    2020.04.08笔记_第1张图片
  • 二进制转八进制和十六进制
    2020.04.08笔记_第2张图片
  • 原码 反码 补码 移码
    在这里插入图片描述
  • 计算机结构

2020.04.08笔记_第3张图片


  1. 时间复杂度. ↩︎

你可能感兴趣的:(每天加油一点点)