面试刷题——剑指offer

简介: 面试刷题——剑指offer

剑指offer刷题

JZ28 对称的二叉树

JZ对称的二叉树

题目描述

f9925938033e4c79aa60830b00452ca5.png

解题思路:

二叉树对称的要求满足:

两棵树的根节点相同 两颗子树的左右子树分别对称 a的左子树与b的左子树的值对应相等 a的右子树的与b的右子树的值对应相等

我们可以定义一个check方法 来检查两颗子树是否满足对称条件~

代码详解

import java.util.*;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    boolean isSymmetrical(TreeNode pRoot) {
     return  cheack(pRoot,pRoot);
    }
    boolean cheack(TreeNode a,TreeNode b) {
        if(a==null && b==null) return true;
        if(a==null||b==null) return false;
        if(a.val!=b.val) return false;
        return cheack(a.left,b.right)&cheack(a.right,b.left);
    }   
}

JZ38 字符串的排列

b5db1eaa00454caea29cd5b318dbfc13.png

解题思路

一道比较经典的dfs
回溯完了记得剪枝~

代码详解

import java.util.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return string字符串ArrayList
     */
    public ArrayList<String> Permutation (String str) {
        ArrayList<String> list=new ArrayList<>();
        StringBuilder sub= new StringBuilder();
        char strs[]=str.toCharArray();
        Arrays.sort(strs);
        dfs(list,sub,strs,0,new boolean[strs.length]);
        return list; 
    }
    void dfs(ArrayList<String> list,StringBuilder sub, char[]strs,int index,boolean[]vis){
        if(index==strs.length){
            list.add(sub.toString());
            return ;
        }
        for(int i=0;i<strs.length;i++){
            if(i>0 && strs[i-1]==strs[i]&&!vis[i-1]||vis[i])continue;
            sub.append(strs[i]);
            vis[i]=true; //用过的字符 标记为true
            dfs(list,sub,strs,index+1,vis);
            vis[i]=false;
            sub.deleteCharAt(index);
        }
    }
}

JZ50 第一个只出现一次的字符

解题思路

.根据字符串的api idexOf 跟lastindexOf 就是字符串第一次出现的索引跟最后一次出现的索引如果是同一个数证明出现了一次

2.还有一种办法是用一个哈希来存 遍历完了次数++ 如果最后次数=1就是出现一次的字符!

这道题可以两种方法来做


代码详解

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        int len=str.length();
        for(int i=0;i<len;i++){
            char ch=str.charAt(i);
            if(str.lastIndexOf(ch)==str.indexOf(ch))
            {
                return i;
            }
        }
        return -1;
    }
}
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        int len=str.length();
        int map[]=new int[256];
        for(int i=0;i<len;i++){
            map[str.charAt(i)]++;
        }
        for(int i=0;i<len;i++){
            if( map[str.charAt(i)]==1){
                return i;
            }
        }
        return -1;
    }
}
相关文章
|
7月前
|
存储 关系型数据库 MySQL
携程面试:100 亿分库分表 如何设计? 核弹级 16字真经, 让面试官彻底 “沦陷”,当场发offer!
携程面试:100 亿分库分表 如何设计? 核弹级 16字真经, 让面试官彻底 “沦陷”,当场发offer!
携程面试:100 亿分库分表 如何设计?  核弹级 16字真经, 让面试官彻底 “沦陷”,当场发offer!
|
8月前
|
存储 SQL 算法
阿里面试:每天新增100w订单,如何的分库分表?这份答案让我当场拿了offer
例如,在一个有 10 个节点的系统中,增加一个新节点,只会影响到该新节点在哈希环上相邻的部分数据,其他大部分数据仍然可以保持在原节点,大大减少了数据迁移的工作量和对系统的影响。狠狠卷,实现 “offer自由” 很容易的, 前段时间一个武汉的跟着尼恩卷了2年的小伙伴, 在极度严寒/痛苦被裁的环境下, offer拿到手软, 实现真正的 “offer自由”。在 3 - 5 年的中期阶段,随着业务的稳定发展和市场份额的进一步扩大,订单数据的增长速度可能会有所放缓,但仍然会保持在每年 20% - 30% 的水平。
阿里面试:每天新增100w订单,如何的分库分表?这份答案让我当场拿了offer
|
8月前
|
算法 NoSQL 应用服务中间件
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
在 Nacos 的配置管理界面或通过 Nacos 的 API,创建一个名为(与配置文件中 dataId 一致)的配置项,用于存储 Sentinel 的流量控制规则。上述规则表示对名为的资源进行流量控制,QPS 阈值为 10。resource:要保护的资源名称。limitApp:来源应用,default表示所有应用。grade:限流阈值类型,1 表示 QPS 限流,0 表示线程数限流。count:限流阈值。strategy:流控模式,0 为直接模式,1 为关联模式,2 为链路模式。
阿里面试:10WQPS高并发,怎么限流?这份答案让我当场拿了offer
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
11月前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
213 1
|
存储 移动开发 前端开发
「offer来了」面试中必考的15个html知识点
该文章汇总了前端面试中常见的15个HTML知识点,涵盖了从HTML文档的规范书写、doctype声明的作用到新兴的HTML5标签应用及移动端viewport设置等内容,旨在帮助求职者更好地准备相关技术面试。
「offer来了」面试中必考的15个html知识点
|
Web App开发 前端开发 JavaScript
「offer来了」1张思维导图,6大知识板块,带你梳理面试中CSS的知识点!
该文章通过一张思维导图和六大知识板块系统梳理了前端面试中涉及的CSS核心知识点,包括CSS框架、基础样式问题、布局技巧、动画处理、浏览器兼容性及性能优化等方面的内容。
|
安全 编译器 C++
【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数
【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数
【一刷《剑指Offer》】面试题 23:从上往下打印二叉树
【一刷《剑指Offer》】面试题 23:从上往下打印二叉树
【一刷《剑指Offer》】面试题 22:栈的压入、弹出系列
【一刷《剑指Offer》】面试题 22:栈的压入、弹出系列