美文网首页
面试题 10.05. 稀疏数组搜索

面试题 10.05. 稀疏数组搜索

作者: itbird01 | 来源:发表于2022-01-24 07:01 被阅读0次
题目.png

题意:稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。

解法1:
1.暴力解法,遍历string数组,找到对应的字符串

解法2:
1.二分查找,按照二分查找的思想,编写代码即可
2.二分查找过程中,处理空字符串,如果遇到空字符串,则收缩右边界(right--),但是在收缩之前,先判断一下right的值是否为s,如果是则直接返回

解题遇到的问题

1.equals与==的区别
1)基本数据类型,两者一样,对比的都是值,可以查看基本数据类型的equals实现,里面也是通过==来操作的,但是注意boolean、int有值范围默认存储对象
2)引用数据类型,==对比的是地址,两个对象地址是否一样,equals对比的是内容

2.String的对比compareTo内部如何实现的?
查看源码,是通过转换为字节数据,for循环对比每个字节实现的

后续需要总结学习的知识点

##解法1
class Solution {
    public int findString(String[] words, String s) {
        int res = -1;
        for (int i = 0; i < words.length; i++) {
            if (words[i].equals(s)) {
                res = i;
                break;
            }
        }
        return res;
    }
}

##解法2
class Solution {
    public int findString(String[] words, String s) {
        int res = binarySearch(words, 0, words.length - 1, s);
        return res;
    }

    private int binarySearch(String[] words, int i, int j, String s) {
        while (i <= j) {
            int mid = (i + j) / 2;
            if (words[mid].equals("")) {
                if (words[j].equals(s)) {
                    return j;
                } else {
                    j--;
                }
            } else {
                if (words[mid].equals(s)) {
                    return mid;
                } else if (words[mid].compareTo(s) > 0) {
                    j = mid - 1;
                } else {
                    i = mid + 1;
                }
            }
        }
        return -1;
    }
}

相关文章

  • 面试题 10.05. 稀疏数组搜索

    题意:稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。 解法1:...

  • LeetCode刷题-稀疏数组搜索

    前言说明 算法学习,日常刷题记录。 题目连接 稀疏数组搜索[https://leetcode-cn.com/pro...

  • 稀疏数组

    1.稀疏数组 1.1创建一个指定长度的稀疏数组 new创建var a = new Array();>>(3)[em...

  • 稀疏数组

    当数组中的大部分元素为0,或者同一值时,可以使用稀疏数组来存储该数组,使用稀疏矩阵可以节约存储空间稀疏数组的处理方...

  • 稀疏数组

    1、稀疏算法的基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。从而减少计...

  • 稀疏数组

    二维数组转成稀疏数,案例(五子棋),思路:1.获取二维数组中有效数据的个数.2.稀疏数组的列数为3,行数通过有效数...

  • 稀疏数组

    1.当一个数组中大部分为0,或为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法: 1)...

  • 稀疏数组

    当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是:1)记录...

  • 稀疏数组

    稀疏数组基本概念 在我们存储有大量重复元素值的二维数组时,如果使用一般的二维数组可能会有大量重复元素,这样就会浪费...

  • 稀疏数组

    1、定义:没有从0开始的连续的index(注意连续的理解) A sparse array is one in wh...

网友评论

      本文标题:面试题 10.05. 稀疏数组搜索

      本文链接:https://www.haomeiwen.com/subject/xnwuhrtx.html