zoukankan      html  css  js  c++  java
  • TMCB其他备选电话面试题

    前一篇文章是我做的题 这是剩余的三道,都很基础。

    1. Write a method to generate the nth number of the Fibonacci sequence.

    Defined as

    f(0)=0

    f(1)=1

    f(n)=f(n-1)+ f(n-2) where n>1

    Sequence is 0 1 1 2 3 5…

    基础题,递归或者非递归方式

    public class Fib {
    
        public static int fib(int n) {
            int result;
            if (n <= 1) {
                return n;
            } else {
                result = fib(n - 2) + fib(n - 1);
            }
            return result;
        }
    
        public static int getNthFib(int n) {
            if (n <= 1)
                return n; // error & default input
            int fn2 = 1, fn1 = 1, index = 2; // starts from 2
            while (index < n) { // fn2 means f(n-2), fn1 means f(n-1)
                fn1 = fn1 + fn2;
                fn2 = fn1 - fn2;
                index++;
            }
            return fn1;
        }

    }

    注意fn1和fn2递增的赋值方式,比引入tmp变量更好的解决方案。


     

    3. Implement an algorithm to find the nth to last element of a singly linked list

    findNth(0) would return the last element of the list

    findNth(1) would return the second to last element of the list

     

    public Node findNthToLast(Node node)

    {

     

    }

     

    基本题,考察两个游标遍历单链表,需要注意边界条件和限制。

    public class LastNth {
        public static int findNth(Node head, int n) {
            if (head == null)
                return -1; // error, list is null
            Node fast = head, slow = head;
            int index = 1;
            while (index <= n) {
                if (fast.next != null) {
                    fast = fast.next;
                } else {
                    return -1; // error, list has less than n elements
                }
                index++;
            }
            while (fast.next != null) {
                fast = fast.next;
                slow = slow.next;
            }
            return slow.val;
        }
    }

     

    4. Write a method to decide if two strings are anagrams or not.

    基本题 需要考虑是否是ASCII码(256位)如果是的话那么定义相应位数的数组进行存储

     

    public class AnagramStr {
    
        public static boolean isAnagram(String s1, String s2) {
            int len1 = s1.length(), len2 = s2.length();
            if (len1 != len2) // not same length
                return false;
            int[] letters = new int[256];
            for (int i = 0; i < letters.length; i++) {
                letters[i] = 0;
            }
            for (char c : s1.toCharArray()) {
                ++letters[c];
            }
            for (char c : s2.toCharArray()) {
                --letters[c];
            }
            for (int i = 0; i < letters.length; i++) {
                if (letters[i] != 0) {
                    return false;
                }
            }
            return true;
        }
    }

     

    如果不限于ASCII,可以使用map来对不确定字符数进行统计。

    public static boolean areAnagram(String s1, String s2) {
        int len1 = s1.length(), len2 = s2.length();
        HashMap<Character, Integer> map1 = new HashMap<Character, Integer>(), map2 = new HashMap<Character, Integer>();
        if (len1 != len2) // not same length
            return false;
        for (char c : s1.toCharArray()) {
            if (map1.containsKey(c)) {
                map1.put(c, map1.get(c) + 1);
            } else {
                map1.put(c, 1);
            }
        }
        for (char c : s2.toCharArray()) {
            if (map2.containsKey(c)) {
                map2.put(c, map2.get(c) + 1);
            } else {
                map2.put(c, 1);
            }
        }
        if (!map1.equals(map2))
            return false;
        return true;
    }

    还有一个思路是对两个string进行排序,然后从头往后遍历。

     

  • 相关阅读:
    @Profile使用及SpringBoot获取profile值
    浅谈maven中的scope,systempath
    Maven Filter与Profile隔离生产环境与开发环境
    spring的@Value注解使用
    maven项目引入spring boot依赖之后filter不生效的问题
    SpringBoot整合Servlet的两种方式
    程序员,30岁,“理所应当”就该中年危机了吗?
    Spring Boot 2 Webflux的全局异常处理
    正经学C#_表达式与其运算符[赋值运算符]:《c#入门经典》
    正经学C#_表达式与其运算符[算术运算符]:《c#入门经典》
  • 原文地址:https://www.cnblogs.com/t--c---/p/3779162.html
Copyright © 2011-2022 走看看