每日算法&面试题,大厂特训二十八天——第十一天(数组)

目录标题

  • 导读
  • 算法特训二十八天
  • 面试题
  • 点击直接资料领取

导读

在这里插入图片描述

肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!

特别介绍

小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶

python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章,可以让你快乐学python练手项目专栏

另外想学JavaWeb进厂的同学可以看看这个专栏:传送们

这是个冲刺大厂面试专栏还有算法比赛练习我们一起加油 上岸之路

算法特训二十八天

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]
输出:true
示例 2:

输入:nums = [1,2,3,4]
输出:false
示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

思路:在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Arrays.sort(nums);
        int n = nums.length;
        for (int i = 0; i < n - 1; i++) {
            if (nums[i] == nums[i + 1]) {
                return true;
            }
        }
        return false;
    }
}


给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6
示例 2:

输入:nums = [1]
输出:1
示例 3:

输入:nums = [5,4,-1,7,8]
输出:23
class Solution {
    public int maxSubArray(int[] nums) {
        int pre = 0, maxAns = nums[0];
        for (int x : nums) {
            pre = Math.max(pre + x, x);
            maxAns = Math.max(maxAns, pre);
        }
        return maxAns;
    }
}

面试题

MySQL 索引底层结构为什么使用 B+树?

 哈希虽然能够提供 O(1) 的单数据行操作性能,但是对于范围查询和排序却无法很好地支
持,最终导致全表扫描;B 树能够在非叶节子点中存储数据,但是这也导致在查询连续数
据时可能会带来更多的随机 I/O,而 B+树的所有叶节点可以通过指针相互连接,能够减
少顺序遍历时产生的额外随机 I/O;

 第一,B 树一个节点里存的是数据,而 B+树存储的是索引(地址),所以 B 树里一个节
点存不了很多个数据,但是 B+树一个节点能存很多索引,B+树叶子节点存所有的数据。

 第二,B+树的叶子节点是数据阶段用了一个链表串联起来,便于范围查找

B+ 树的叶子节点链表是单向还是双向?
双向链表

点击直接资料领取

这里有python,Java学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。

你可能感兴趣的:(Java,算法,java,leetcode)