`
mengxianming
  • 浏览: 2176 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

面试题目memo

阅读更多
题目都是网上看到的。试着解答一下,全当脑力训练。以后会陆续追加,持续更新本帖。

95.华为面试题
1 判断一字符串是不是对称的,如:abccba
[color=darkblue]思路:题目的解答是一目了然的。如下伪代码。
boolean check(str){
    for(int i=str的开始索引,j=str的末尾索引;i < j;i++,j--){
        if(str[i] != str[j]){
            return false;
        }
    }
    return true;
}
[/color]

2.用递归的方法判断整数组a[N]是不是升序排列
[color=darkblue]思路:先判断当前元素以后的子数组是否为升序,若是则只需判断当前元素是否<=子数组的第一个元素即可。如下伪代码。
boolean check(int arr[], int s){
    if(s>=arr.length - 1) return true;
    if(check(arr, s+1)){
      if(arr[s] <= arr[s+1])  return true;    
    }
    return false;
}
[/color]


3. 给出一个函数来输出一个字符串的所有排列。
思路:先给一个例子,aabc,则所有的排序如下:
a开头:aabc, aacb, abac, abca, acab, acba
b开头:baac, baca, bcaa
c开头:caab, caba, cbaa
算法描述:
1、对字符串进行预处理,得到不重复字符集以及各个字符出现频率。
   例如得到[a,b,c], [2,1,1]
2、设字符集的第一个元素作为当前元素。例如元素a。
3、如果当前元素频率大于0,则把当前元素放入结果缓存里,此时字符的频率需要-1。
   如果当前元素频率等于0, 执行5步。 
  
   例如取出a放入结果缓存,则各个变量变成如下:
   频率集:[1,1,1]
   结果缓存:[a]
4、3步处理后,结果缓存长度会增加1,只需计算剩余字符集以及其相应频率条件的下的所有排列,
   把每个排序加到当前结果缓存后面,即可得到以当前结果缓存为前缀的所有结果排列。
   【计算剩余字符集以及其相应频率条件的下的所有排列】为原问题的子问题,只需递归执行除1步外的各步即可。
   具体操作为:
   1)拷贝当前频率集作为递归参数。
   2)执行递归处理
5、把字符集的下一个元素设为当前元素,重复3步的处理


4. 最大子数组和
递归算法:
public class MaxSubArraySum {
	private int result = 0;
	private int maxSumIncludeN = 0;

	public int execute( int[] a ) {
		maxSubArraySum( a, a.length );

		return result;
	}

	private void maxSubArraySum( int[] a, int n ) {
		if ( n == 1 ) {
			if ( a[n - 1] > result ) {
				result = a[n - 1];
			}
			if ( a[n - 1] > maxSumIncludeN ) {
				maxSumIncludeN = a[n - 1];
			}
			return;
		}

		maxSubArraySum( a, n - 1 );

		if ( a[n - 1] + maxSumIncludeN > a[n - 1] ) {
			maxSumIncludeN = a[n - 1] + maxSumIncludeN;
		}
		else {
			maxSumIncludeN = a[n - 1];
		}
		if ( result < maxSumIncludeN ) {
			result = maxSumIncludeN;
		}
	}
	
	public static void main(String[] args){
		int[] a = {1, -2, 3, 10, -4, 7, 2, -5};
		
		System.out.println("MaxSubArraySum=" + new MaxSubArraySum().execute( a ));
	}
}


分享到:
评论

相关推荐

    vue、react面试题大合集

    Vue.js 是一款流行的...总的来说,Vue和React面试题涵盖了前端框架的基础知识、进阶特性和实践技巧,同时也包括了与之相关的技术栈,如小程序、TypeScript、Webpack和后端开发知识,全面考察开发者的技术广度和深度。

    vue、react面试题合集 (附答案) 中文PDF版.pdf

    ### Vue、React面试题合集知识点解析 #### 一、Vue动态权限绑定渲染列表 **知识点概述:** 在本节中,我们主要讨论了如何在Vue应用中实现动态权限列表的渲染。这个问题涉及到Vue的数据绑定机制、条件渲染、HTTP...

    前端面试题目搬运,JS、Vue、React等

    JavaScript是Web开发的基础,面试中常见的JavaScript题目可能包括: 1. **变量与数据类型**:理解var、let和const的区别,以及基本数据类型(如字符串、数字、布尔、null、undefined)和复杂数据类型(对象、数组)...

    react面试题-react-app-master.zip

    以上是React面试中常见的知识点,对于"react-app-master"这个压缩包,可能是包含一个React项目模板或者面试题集,具体的学习或准备应根据压缩包内的具体内容来展开。在学习或面试前,建议对这些概念有深入的理解,并...

    react-react面试题之diff的原理.zip

    本篇文章将深入探讨React面试中常问的Diff算法的原理。 Diff算法是React在更新组件树时,用于找出最小DOM变更集的一种策略。它的核心目标是在两个不同的DOM树之间找到最小的变更路径,以减少实际DOM操作,提高应用...

    程序员面试编程问题 Programming Interview Problems 2021

    本篇文章将详细介绍在《程序员面试编程问题 Programming Interview Problems 2021》一书中所涉及的几个典型的动态规划题目,并提供其解决方案。 #### 纤维数列 (Fibonacci Sequence) **知识点:** - 纤维数列定义...

    react-react面试题之Jsx转换成真实DOM的过程.zip

    7. **性能优化**:React提供了如`shouldComponentUpdate`、`React.PureComponent`、`React.memo`等机制,帮助开发者控制何时以及如何更新组件,以进一步提高性能。 总结来说,JSX转换成真实DOM的过程包括了Babel的...

    前端大厂最新面试题-render.docx

    但在React 16.8及更高版本中,推荐使用`React.memo`或`useMemo` Hook来优化组件的渲染行为。 综上所述,React的`render`方法是基于组件状态和props变化来触发的,其目的是为了更新用户界面。通过对虚拟DOM的高效...

    Java面试题和答案50道.docx

    在这份Java面试题集中,我们看到了几个经典的问题和相应的代码实现。首先,第一个问题是关于兔子繁殖问题,也就是著名的斐波那契数列。斐波那契数列的规律是每个数等于前两个数之和,可以使用递归或动态规划来解决。...

    google笔试题

    本文将根据提供的资料,详细解析几道谷歌笔试题,包括它们的背景、题目要求、解题思路以及可能涉及的知识点。 #### 二、题目分析 ##### 1. 在排序二叉树中查找特定值 **题目描述**:给定一棵排序二叉树,设计一个...

    百度地图开发java源码-OfferTerminator-Documents:偏向于软件工程师的面试资料整理

    JavaScript,题库按简单/中等/困难分类,题目按照算法思想、数据结构归档分类,解题思路图示等。 在线编程 阅读工具 本项目的笔记资料均由 进行排版、编写,注重知识模块间的联系性,以及获得良好阅读体验,推荐使用...

    (完整版)react面试题最全面超完整(本人用的).pdf

    面试中,React相关的题目通常涵盖组件化、状态管理、生命周期方法、事件处理、性能优化等方面。以下是一些关于React组件基础、事件机制和高级特性的详细说明: 1. **React事件机制**: - React不直接将事件绑定到...

    codility-fibonacci-[removed]Codility Fibonacci解决方案

    本文将详细讨论这个题目,并通过JavaScript语言给出解决方案。 Fibonacci数列是数学中的一个重要概念,它由0和1开始,后面的每一个数都是前两个数的和。用数学公式表示就是:F(n) = F(n-1) + F(n-2),其中F(0) = 0...

    奇安信笔试题

    【奇安信笔试题解析】 在奇安信的笔试中,我们遇到了两个经典的数学问题,它们不仅考验逻辑思维,还涉及到计算机编程中的递归和概率计算。下面将详细讲解这两个问题及其解题方法。 **一、兔子繁殖问题** 这是一个...

    百分点(14问).pdf

    标题“百分点(14问)”和描述“百分点前端面试题”表明了这份文档是一系列针对前端开发者的面试题目,而标签“百分点 前端面试题”进一步强调了文档的主题。文档中列举的14个问题涉及了前端开发领域的多个关键概念,...

    如何有效率的刷leetcode-OJ:哦

    带memo的递归是自顶向下,动态规划是自底向上。因此动态规划一般不用递归,而是用循环迭代来实现。 大V理解的刷题四个境界 纯刷 这题我做过,但是不会 面试有印象,但是挂掉 硬记 亲手做过(非复制粘贴);短期内会...

Global site tag (gtag.js) - Google Analytics