剑指offer Day3

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


字符操作

charAt()
toString()
StringBuilder()
String newStr = new String(array, 0, size);(数组用toString返回的是哈希值)
char[] array = new char[length * 3];
s.substring(n, s.length()) 切片函数


提示:以下是本篇文章正文内容,下面案例可供参考

一、查找算法(简单)

找出数组中重复的数字。

1.哈希表

  • 底层数据结构是哈希表
  • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
  • 没有带索引的方法,所以不能使用普通for循环遍历
  • 由于是Set集合,所以是不包含重复元素的集合

哈希表的contains方法

2.字典(原地交换)


class Solution {
    public int findRepeatNumber(int[] nums) {
        int i = 0;
        while(i < nums.length) {
            if(nums[i] == i) {
                i++;
                continue;
            }
            if(nums[nums[i]] == nums[i]) return nums[i];
            int tmp = nums[i];
            nums[i] = nums[tmp];
            nums[tmp] = tmp;
        }
        return -1;
    }
}

踩坑

			 int temp=nums[i];
            nums[i]=nums[nums[i]];
            nums[nums[i]]=temp;

会超过时间限制,套娃

二、二维数组中的查找

代码如下(示例):在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

1.暴力搜索

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if(matrix==null||matrix.length==0){return false;}
        int row=matrix.length;
        int columns=matrix[0].length;
        
        for(int i=0;i<row;i++){
            for(int j=0;j<columns;j++){
                if(matrix[i][j]==target){return true;}

            }
        }
       return false;
    }
}

踩坑

if(matrix==null||matrix.length==0){return false;}

没考虑输入是[[]]的特殊情况(有空集合还不算离谱,有空集合的集合才离谱)

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


三、第一个只出现一次的字符

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值