面试题汇总(算法)

Merge Sorted Array(Java实现)
如何快速判断某 URL 是否在 20 亿的网址 URL 集合中?
剑指 offer 第一题: 二维数组中的查找
图解剑指 offer 第二题: 替换空格
图解剑指 offer 第三题: 从尾到头打印链表

   public void printListFromTailToHead(List<String> list, int idx) {
        int nextIdx = idx + 1;
        if (list.size() >= nextIdx) {
            printListFromTailToHead(list, nextIdx);
            System.out.println(list.get(idx));
        }
    }

    @Test
    public void testPrintList() {
        final List<String> list = Lists.newArrayList("0", "1", "2", "3", "4", "5");
        printListFromTailToHead(list, 0);
    }

图解「剑指Offer」之旋转数组的最小数字

如何在 1000 万个整数中快速查找某个整数?

这个问题并不难。我们的内存限制是 100MB ,每个数据大小是 8 字节,最简单的办法就是将数据存储在数组中,内存占用差不多是 今天讲的内容,我们可以先对这 1000 万数据从小到大排序,然后再利用二分查找算法,就可以快速地查找想要的数据了。 看起来这个问题并不难,很轻松就能解决。实际上,它暗藏了 “ 玄机 ” 。如果你对数据结构和算法有一定了解,知道散列表、二叉树这些支持快速查找的动态数据 结构。你可能会觉得,用散列表和二叉树也可以解决这个问题。实际上是不行的。 虽然大部分情况下,用二分查找可以解决的问题,用散列表、二叉树都可以解决。但是,不管是散列表还是二叉树,都会需要比较多的额外的内 存空间。如果用散列表或者二叉树来存储这 1000 万的数据,用 100MB 的内存肯定是存不下的。而二分查找底层依赖的是数组,除了数据本身之外,不需要额外存 储其他信息,是最省内存空间的存储方式,所以刚好能在限定的内存大小下解决这个问题。

分段的链表翻转

给定正整数k ,一个链表 头指针
实现k个元素分为一组,组之间是翻转的,组内是保持原来的顺序。
示例:
k= 2
A B C D E F G => G E F C D A B

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class ListNode {
        private ListNode next;
        private char value;
    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class MyList {
        private ListNode head;
        private int size;
    }

    public ListNode reverse(ListNode head, ListNode lastGroupHead, int groupSize) {
        if(head == null) {
            return null;
        }
        ListNode currentNode = head;
        ListNode next = head.getNext();
        for(int idx=1; idx <= groupSize; idx++) {
            next = currentNode.getNext();
            if(idx == groupSize || next == null) {
                // next 指向 lastGroupHead
                currentNode.setNext(lastGroupHead);
                if(next == null) {
                    return head;
                }
            }
            currentNode = next;
        }
        // 返回当前分组的head
        return reverse(next, head, groupSize);
    }

输出字符数组中不包含字符b、也不包含连续的ac子串

代码:
输入:一个字符数组。
输出:使得输出字符数组中不包含字符b、也不包含连续的ac子串。

以下是3个case:
case1:
输入:mmaxcbd
输出:mmaxcd

case2:
输入:abbcdef
输出:def

case3:
输入:fexaaccd
输出:fexd

    public String format(String rawStr) {
        int length = rawStr.length();
        StringBuilder sb = new StringBuilder();
        for(int idx=0; idx<length; idx++) {
            // 遍历字符串
            char c = rawStr.charAt(idx);
            // 如果遇到 b, 直接忽略
            if(c == 'b'){
                continue;
            }else if(sb.length() == 0){
                // 如果 StringBuilder 为空,直接插入
                sb.append(c);
            }else if(c == 'c'){
                // 如果遇到 c,且 StringBuilder 中的最后一个字符为 a,则将a和c同时删除
                Character pChar = sb.charAt(sb.length() - 1);
                if(pChar == 'a') {
                    sb.deleteCharAt(sb.length() - 1);
                } else {
                    sb.append(c);
                }
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }

数组,数组中只有3种元素,【1,2,3,3,2,1】或者【3,4,7,7,4,3,3,】。要求:排序,O(n),不要用统计计数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 字符串 【3】最长回文子串 【3】最长无重复子串 【1*】字符串转数字 【4】KMP 算法 【2】字符串全排列 【...
    Mr_MayBee阅读 326评论 0 0
  • http://spark.apache.org/docs/latest/api/python/index.html...
    mpro阅读 6,077评论 0 4
  • 本文是我正在写的gitbook上的书Algorithms一个章节,由于是记录课程的内容,所以下文都是英文,见谅。 ...
    eric_lai阅读 444评论 0 1
  • PHP数组函数,摘录于PHP手册 1、array_change_key_case (PHP 4 >= 4.2.0,...
    kotlin360阅读 691评论 2 1
  • 嗯,好好休息,不要熬夜,放平心态,认真努力。
    哎四叶草阅读 209评论 0 1