首页 > 编程语言 >面经-算法

面经-算法

时间:2024-05-31 09:47:21浏览次数:20  
标签:map int 面经 high 算法 dict low str

  1. 查找文本中出现最多的字符,和位置

    map记录字符和数量

    #pyhon版本
    def wordcount(str):
        h =[]
        dict = {}
        max = 0
        maxkey = ""
        chars = str.split()
        for c in chars:
            if c not in dict:
                dict[c] = 1
                continue
            dict[c] = dict[c] + 1
            if max < dict[c]:
                max = dict[c]
                maxkey = c
        for index, c in enumerate(chars):
            if c == maxkey:
                h.append(index)
        print(h)
        print(dict)
        print(maxkey)
    
    private static void findMostStr(String s) {
        HashMap<String, Integer> map = new HashMap<>();
        ArrayList<Integer> localList = new ArrayList<>();
        String[] ss = s.split(" ");
        int max = 0;
        String maxKey = null;
        for (String str : ss) {
            if (!map.containsKey(str)){
                map.put(str, 0);
                continue;
            }
            map.put(str, map.get(str)+1);
            if (max < map.get(str)) {
                max = map.get(str);
                maxKey = str;
            }
        }
        for(int i = 0; i < ss.length; i++) {
            if (ss[i].equals(maxKey)) {
                localList.add(i);
            }
        }
        System.out.println(localList);
    }
    
  2. 快速排序

    【全网最清晰快速排序,看完快排思想和代码全部通透,不通透你打我!】https://www.bilibili.com/video/BV1vP411g7J3?vd_source=b5b6b7b62043766d7076c5c42dfe4aef

    找到基准,把比基准小的数放入基准前方,比基准大的数放入基准后面,然后分而治之

    private static void quickSort(int[] a, int low, int high) {
     if (low < high) {
            //        找到当前基准位置
            int p = partition(a,low,high);
            quickSort(a,low, p - 1);
            quickSort(a, p + 1, high);
        }
            
     }
    
    private static int partition(int[] a, int low, int high) {
        int j = a[low];
        while(low < high) {
            while (low < high && a[high] >= j) {
                high --;
            }
            a[low] = a[high];
            while (low < high && a[low] <= j) {
                low ++;
            }
            a[high] = a[low];
        }
        a[low] = j;
        return low;
    }
    
    #pyhon版
    def partiton(a, low, high):
        point = a[low]
        while (low < high) :
            while (low < high and a[high] >= point):
                high = high - 1
            a[low] = a[high]
            while(low < high and a[low] <= point):
                low = low + 1
            a[high] = a[low]
        a[low] = point
        return low
    
    
    def quicksort(a, low, high):
        if (low < high):
            p = partiton(a,low, high)
            quicksort(a, low, p - 1)
            quicksort(a, p + 1, high)
    
  3. 最大不重复字符串字串

标签:map,int,面经,high,算法,dict,low,str
From: https://www.cnblogs.com/qbxyzzjw/p/18223817

相关文章

  • 面经-测试用例
    微信修改头像微信手机充值百度输入框测试case兼容:不同操作系统不同浏览器不同百度版本不同手机类型安全:加密文件不允许搜索出来规避违规字符易用:是否支持复制粘贴输入时智能搜索推荐点击输入框有光标显示界面:布局,颜色合理无错别字异常:弱网。无......
  • 数据结构与算法
    时间复杂度常数操作包括加减乘除,以及从数组中取出一个值(因为直接计算偏移量,是一块连续的区域)注意:从list中取出一个值不是常数操作,因为需要遍历去找时间复杂度就是计算存在多少个常数操作且忽略低阶项,只要高阶项,且忽略高阶项的系数通过亦或完成交换算法defswap():a......
  • 【算法】范围尝试模型、已有字符串添加最少字符使其成为回文字符串
    1.概述给定一个字符串str,如果可以在str的任意位置添加宇符,请返回在添加字符最少的情況下,让str整体都是回文字符串的一种结果。【举例】str="ABA"str本身就是回文串,不需要添加字符,所以返回"ABA"str="AB"可以在’A'之前添加’B'使str整体都是回文串,故可以返回"BAB"......
  • 使用Java实现线性回归算法
    线性回归算法原理线性回归的基本思想是通过一条直线来拟合数据点,使得数据点到这条直线的距离平方和最小。其数学表达式为:y=β......
  • C语言贪心算法——解硬币
    题目:有1元,5元,10元,100元,500元的硬币各从c1枚,c5枚,c10枚,c50枚,c100枚,c500枚,现在要用这些硬币支付A元,最少需要多少枚硬币输入:第一行有六个数字,分别代表从小到大6种面值的硬币的个数:第二行为A案例:输入:321302620输出:6#include<stdio.h>intmain(){ intnumber[6]......
  • 算法金 | 详解过拟合和欠拟合!性感妩媚 VS 大杀四方
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」今天我们来战过拟合和欠拟合,特别是令江湖侠客闻风丧胆的过拟合,简称过儿,Emmm过儿听起来有点怪怪的1.楔子机器学习模型是一种能够从数据中学习规律并进行预测的算法。......
  • 代码随想录算法训练营第第23天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索
    修剪二叉搜索树这道题目比较难,比添加增加和删除节点难的多,建议先看视频理解。题目链接/文章讲解:https://programmercarl.com/0669.修剪二叉搜索树.html视频讲解:https://www.bilibili.com/video/BV17P41177ud/***@param{TreeNode}root*@param{number}low*@pa......
  • A*算法求解八数码问题
    一、问题描述:A*算法是一种启发式图搜索算法,其特点在于对估价函数的定义上。对于一般的启发式图搜索,总是选择估价函数f值最小的节点作为扩展节点。因此,f是根据需要找到一条最小代价路径的观点来估算节点的,所以,考虑每个节点n的估价函数值为两个分量:f(n)=g(n)+h(n),从起始节点......
  • 基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真
    1.算法运行效果图预览    2.算法运行软件版本matlab2022a 3.算法理论概述    基于离散余弦变换(DiscreteCosineTransform,DCT)和位平面分解(Bit-PlaneDecomposition)的数字水印嵌入与提取算法,是一种结合了频域与空域特性的稳健数字水印技术。该方法利......
  • 计算机算法中的数字表示法——定点数
    目录1.前言2.什么是定点数3.定点数如何去表示数字4.定点数表示法的局限性1.前言前面一篇文章讲了计算机中的数字表示法:原码、补码和反码,这一篇文章开始进行定点数的讲解。2.什么是定点数定点数,从字面意思上理解就是小数点位置固定,如下图所示:数字既包括整数,又包括......