【408 2019算法题目】教程文章相关的互联网学习教程文章

算法题——给定一个数组 arr,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。【代码】

参考自:https://blog.csdn.net/qq_38200548/article/details/80688630示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明:1.必须在原数组上操作,不能拷贝额外的数组。2.尽量减少操作次数。package suanfa;public class demo2 {public static void main(String[] args) {//随便定义一个数组int[] arr={1,2,0,3,0,4,5,0};moveZeros(arr);for (int i : arr) {System.out.print(i+" ");}}private static void moveZeros(int[...

算法题——买卖股票的最佳时机【代码】

参考自:https://blog.csdn.net/qq_38200548/article/details/80663818 题目分析:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的 最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时...

算法题一

package com.greatest.Array;import java.util.Scanner;public class ti {// 1.一个数组 ,让每个元素去除第一个元素 ,得到的商作为被除数所在的位置public static void main(String[] args) {int[] arr = new int[] { 12, 34, 1, 45, -564, -56, 2 };// for(int i=0;i<arr.length;i++){// arr[i]=arr[i]/arr[0];// }for (int i = arr.length - 1; i >= 0; i--) {arr[i] = arr[i] / arr[0];}for (int i = 0; i < arr.length; i++)...

算法题3:携程实习生笔试:求一个整数的加数的最大乘积(允许加数相同和不同)【代码】

给出一个整数n,将n分解成至少两个整数之和,使得这些整数的乘积最大化,输出能获得的最大的乘积。 (1) 允许存在相同的加数 (2) 不允许存在相同的加数 1. 允许存在相同的因子给出一个整数n,将n分解成至少两个整数之和,使得这些整数的乘积最大化,输出能获得的最大的乘积。 输入描述 : 输入为一个整数 输出描述 :输出为一个整数 样例 in: 10 out: 36 (10=5+5=2+3+2+3, 36=232*3)思路:给你一个数n = a + b,a * b何时最大? 学过...

LeetCode算法题3:无重复字符的最长子串解析【代码】

给定一个字符串,找出不含有重复字符的最长子串的长度。 示例1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例2: 输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b",其长度为 1。示例3: 输入: "pwwkew" 输出: 3 解释: 无重复字符的最长子串是 "wke",其长度为 3。请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。这个题目其实是简单的,滑动窗算法是很好的解决方法,...

【算法】LeetCode算法题-Longest Common Prefix【代码】【图】

这是悦乐书的第146次更新,第148篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第5题(顺位题号是14),给定一个随机的字符串数组,查找这些字符串元素的公共前缀字符串,如果没有则返回空串。其中,字符串数组中的元素都是由小写字母a-z之间随机组合而成。例如:输入:["flower","flow","flight"] 输出:"fl"输入: ["dog","racecar","car"] 输出: ""输入:["c"] 输出:"c"本次解题使用的开发工具是eclipse,jdk使用...

【算法】LeetCode算法题-Palindrome Number【代码】【图】

这是悦乐书的第144次更新,第146篇原创 今天这道题和回文有关,即从前往后和从后往前是一样的,如“上海自来水来自海上”就是一个回文字符串,如整数121就是回文数,这些都是和回文相关的。 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第3题(顺位题号是9),给定一个整数,判断其是否为回文整数,即向前读和向后读的整数一样。输入: 121 输出: true输入: -121 输出: false 说明:从左到右读为-121。从右到左读为12...

京东非常精彩的幂数论题目 京东算法题---求幂

//这个才是正确的代码作者:牛妹链接:https://www.nowcoder.com/discuss/38889?type=0&order=3&pos=6&page=1来源:牛客网 我们考虑去枚举n范围内的所有i,然后处理出i的幂那些数。 这个i就叫做底. 因为a^b=c^d 那么必然存在一个i s.t.下面的十字成立.这个证明做因数分解即可.考虑对于i ^ x, 我们需要计算满足 (i ^ x) ^ c = (i ^ y) ^ d的数量,其中i ^ x, i ^ y <= n. 这些我们可以通过预处理出来。 然后对于(i ^ x) ^ c = ...

算法题 - 汉诺塔问题 - Python【代码】

问题描述: 汉诺塔问题 在汉诺塔传说,有三根柱子可以用大写字母A, B, C命名,其中只有A柱子摆放n片圆盘(1<=n<=64), 若要把A柱子上的所有圆盘转移到 C柱子上,问最少需要移动多少次圆盘? 移动圆盘的规则如下:每次只能移动一片圆盘 任何情况下,大的圆盘必须摆放在小的圆盘之下问题分析: 昨天baidu校招一面碰到的题目,问了其他同学,基本上一面都是以基础的数据结构题目为主,现在总结一下。问题估计是经典的不能在经典了,递...

有时候(如数据结构算法题)编程不是难在处理问题的思路,而在用代码将思路描述出来。

初学编程总觉得好简单,不就是加减乘除,或者什么,思路太简单了,就这样这样做就可以了,代码就不用写了,反正这么简单。 其实难就难在,如何用代码这种语言将你的思路书写下来。 写代码会受到很多的限制,你想要这样干,但你要如何让机器这样干。编程所要做的唯一一件事就是:拆分。拆分一整个件事成为一个个步骤---->流程图。拆分流程图中每一个步骤成为更详细的、具体的----->一条条代码。所以流程图是人脑中的大逻辑框架,不画...

初识面试中的算法题

在面试过程中,常常被要求手撕代码,作者作为测试经理,也经常被手撕代码。手撕代码的内入无非是对字符串、数组、元组、字典进行操作。第一题:取值:1、从字符串及元组中取值str1 = "abcd"stra, strb, strc, strd=str1结果:"a","b","c","d"2、从数组中取值list1 = [a,b,c,d]lista = list1[0],以此类推,中括号中的数字是数组的下标,从0开始计数3、从字典中取值dic = {key1:value1,key2:value...}dic1= key14、数组的运算lst=[7...

有趣的算法题-3【图】

1.链表中环的入口节点 假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程) 当快慢指针相遇的时候: 此时慢指针走的路程为Sslow = x + m * c + a 快指针走的路程为Sfast = x + n * c + a 2 Sslow = Sfast 2 * ( x + m*c + a ) = (x + n *c + a) 从而可以推导出: x = (n - 2 * m )*c - a = (n - 2 *m -1 )*c + c - a 即环前面的路程 = 数个环的长度(为可能为0)...

趣味算法题-1

1.在一维坐标轴上有n个区间段(坐标),求重合区间最长的两个区间段 1.先按有坐标排序。 2.用递归算法解决从后往前找长度。public class point { //定义点类int x;int y;public point() {// TODO Auto-generated constructor stub}public point(int x, int y){this.x = x;this.y = y;}} public static point comSegment(point p1, point p2)//求两个点是否相交,相交的话求相交的起点和终点{point comPoint = new point();if(p1.y ...

有趣的算法题-1

java结构中: Queue:offer,poll,isEmpty,peek 定义队列:Queue<Integer> queue = new LinkedList<Integer>(); Stack:push,pop,Empty,peek 一 二维数组中查找: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 1.int[][] array, target,row = (二维数组的行数) col = (二维...

有趣的算法题-2

一:二叉搜索树和双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 1.要用一个lastNode指针指着最右的节点。/** public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}} */ public class Solution {public TreeNode Convert(TreeNode pRootOfTree) {TreeNode lastNode = nul...