编程练习
焦虑的说说
喜欢编程,喜欢听音乐,跑步
展开
-
java:二叉树的先序遍历
【题目描述】:Given a binary tree, return the preorder traversal of its nodes' values.For example:Given binary tree{1,#,2,3}, 1 \ 2 / 3return[1,2,3].Note: Recursive solu原创 2017-04-24 15:23:10 · 635 阅读 · 0 评论 -
稳定排序:归并排序
归并排序:对于给定的一组长度为n的记录,利用分治和递归的思想,将记录分为一个个长度为1的子序列,最后再用递归方法将排好序的子序列合并成为越来越大的有序序列。此方法称为2-路归并排序归并排序一般会用在外部排序的算法中。该算法是采用分治法的一个非常典型的应用。【时间复杂度】:O(nlogn)【最优情况】: O(nlogn)【最坏情况】:O(nlogn)(归并原创 2017-04-20 16:02:20 · 597 阅读 · 0 评论 -
稳定排序:插入排序
插入排序: 每次从【无序表】中取出第一个元素。把它插入的到有序列表中的合适位置。 实现思路: 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数【从前向后】扫描,把第三个数按大小插入到合适的位置中。 为什么说插入排序是稳定排序呢? 因为插入排序,选第一个元素为有序序列,后面的元素和它作比较,比它大就在它后面,比它小就和它交换位置,和它相等,就放在原创 2017-04-19 14:58:46 · 1537 阅读 · 0 评论 -
JS:apply()二、函数的上下文
【题目描述】 将函数 fn 的执行上下文改为 obj 对象 输入例子:speak(function () {return this.greeting + ', ' + this.name + '!!!';}, {greeting: 'Hello', name: 'Rebecca'})输出例子:Hello, Rebecca!!!思路 根据题目要求,是【函数上下文】,将fn函数的【执行上下文原创 2017-04-02 09:58:23 · 562 阅读 · 0 评论 -
JS:函数里的函数
题目描述 实现函数 functionFunction,调用之后满足如下条件: 1、返回值为一个函数 f 2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ‘, ’ 3、所有函数的参数数量为 1,且均为 String 类型 输入例子:functionFunction(‘Hello’)(‘world’)输出例子:Hello, world思路 刚开始看不原创 2017-04-02 10:44:33 · 3124 阅读 · 0 评论 -
java:逆波兰表示法(后缀表达式)
用逆波兰表示法计算算术表达式的值。有效运算符为+,-,*,/。每个操作数可以是整数或另一个表达式。例子: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6public class Solution(){ public int evalRPN(String原创 2017-04-12 13:08:11 · 1252 阅读 · 0 评论 -
JAVA:环链表(判断单链表是否存在环)
【题目描述】Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without using extra space? 给定单链表,判断是否存在环?不适用额外空间 【知识点】: 环链表:从判断一个单链表是否存在循环而扩展衍生的问题,有则称之为有环链表问题。 【解决原创 2017-04-17 20:52:00 · 6441 阅读 · 1 评论 -
java:链表排序
题目描述:Sort a linked list using insertion sort. 使用插入排序对链表进行排序 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { *转载 2017-04-18 23:18:34 · 3471 阅读 · 1 评论 -
java:共线上的点
【题目描述】:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line 在一个二维平面上有n个点,求出现在同一直线上的点的最大个数 在此之间,我还去学了一下HashMap 是Map接口的常用实类 创建一个HashMap:原创 2017-04-16 15:15:28 · 952 阅读 · 0 评论 -
大小写转换问题
【问题描述】:给定一个字符串,请将其中的英文字母的大小写进行转换输入:第一行是一个整数N,表示样例的个数,以后每行一个字符串,字符串由字母、数字、符号甚至空格组成,长度不超过200输出:每行一个输出转换后的结果C++ 思路:读取一个字符串,用for循环一个一个对字符进行判断,如果是小写,则把Ascii码减32;如果是大写,Ascii码加32;//c++版#inclu原创 2017-04-21 21:05:43 · 2013 阅读 · 2 评论 -
java: Merge-two-sorted-lists
【问题描述】: Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 大致意思:合并两个有序链表,新的链表也有序public class ListNode{i原创 2017-04-23 11:23:23 · 486 阅读 · 0 评论 -
螺旋矩阵(队列)
有如下矩阵,设1点的坐标是(0,0),7点的坐标是(-1,-1),2点坐标是(0,1),编程实现输入坐标值,如(a,b),输出其相应的值观察该矩阵,知道这个矩阵是按顺时针螺旋向外扩展的,我们可以把它分成一圈一圈的,如下:现在看看(a,b)会处在第几圈呢?点2(0,1)在第2圈,点18(-1,-2)在第2圈,所以圈数就等于max(abs(a),abs(b)),即取a,b的绝对值中原创 2017-08-09 14:35:48 · 476 阅读 · 0 评论 -
数据结构:排序
一、排序按照待排序的记录数量不同,使得排序过程中涉及的存储器不同,排序方法分为两大类: 【内部排序】:待排序记录存放在计算机随机存储器中进行排序 【外部排序】:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需要外存进行访问按照稳定性,排序方法分为 【稳定性排序】: 通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单化一下原创 2017-04-19 11:04:12 · 344 阅读 · 0 评论 -
编程实现:《直通BAT面试算法精讲课》第一课:二叉树按层遍历
题目描述:给定一棵二叉树头节点root,按照层次打印二叉树,并要求携带行号的相关信息(例如一层遍历完后要求打印换行符或者每一层都打印行号)。要求设计算法,按照以下格式打印出该二叉树:12 3 4 5 67 81.首先我们要理解按层遍历,按层遍历主要针对图的宽度优先遍历(DFS),而宽度优先遍历通常又使用队列结构。2.为什么会用队列呢?这跟队列的特性有关,因为队原创 2017-08-10 18:10:06 · 321 阅读 · 0 评论 -
js:apply()一、函数传参
题目描述 将数组 arr 中的元素作为调用函数 fn 的参数 输入例子:argsAsArray(function (greeting, name, punctuation) {return greeting + ‘, ’ + name + (punctuation || ‘!’);}, [‘Hello’, ‘Ellie’, ‘!’])输出例子:Hello, Ellie!函数调用 调用函数可以使原创 2017-04-02 09:39:12 · 1877 阅读 · 0 评论 -
js:计时器
题目描述 实现一个打点计时器,要求 1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1 2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作 3、第一个数需要立即输出 知识点 Window setInterval() 方法setInterval(code,millisec,lang)cod原创 2017-04-01 22:28:12 · 1088 阅读 · 0 评论 -
JS编程:查找数组元素位置
题目描述 找出元素 item 在给定数组 arr 中的位置 输出描述:如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1输入例子:indexOf([ 1, 2, 3, 4 ], 3)输出例子:2考察点:数组、indexOf()方法 知识:indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。可用于数组。但是 所有主要浏览器都支持 indexOf() 方法,原创 2017-03-29 19:13:51 · 44368 阅读 · 5 评论 -
js编程:数组求和
数组求和 链接:https://www.nowcoder.com/questionTerminal/cc3ce199461c4c4cb8f63db61d7eba30 来源:牛客网计算给定数组 arr 中所有元素的总和输入描述: 数组中的元素均为 Number 类型输入例子: sum([ 1, 2, 3, 4 ])输出例子: 10很多人都说这不是很简单吗,直接for循环就行了 但是对于我原创 2017-03-29 19:59:44 · 8997 阅读 · 1 评论 -
js编程:请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
题目的意思是既要在原有的数组里删除掉重复的条目,又要把有重复条目的数字放到另一个数组里。Array.prototype.del(){ var arr=[]; for(var i=0;i<this.length;i++){ for(var j=i+1;j<this..length;j++){ if(this[i]==this[j]){ arr.push(this.spl原创 2017-03-29 20:23:37 · 2319 阅读 · 0 评论 -
js编程:移除数组中和指定的值相等的元素
题目描述 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组 输入例子:remove([1, 2, 3, 4, 2], 2)输出例子:[1, 3, 4]看清题目的意思!!!是不能改变原数组,但是要返回新的数组,那怎么办呢,新建一个数组,把不等于item的值push进去function remove(arr, item) { var ret=[原创 2017-03-29 20:42:39 · 4301 阅读 · 0 评论 -
js编程:移除数组元素
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 输入例子:removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)输出例子:[1, 3, 4]这次是要改变数组了,那就直接用splicefunction removeWithotCopy(arr,item){ for(var i=0;i<arr.length;i原创 2017-03-29 21:09:55 · 320 阅读 · 0 评论 -
js编程:在数组开头插入一个元素
题目描述 在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组输入例子: prepend([1, 2, 3, 4], 10)输出例子: [10, 1, 2, 3, 4]初始答案function prepend(arr, item) { var ret=[]; ret[0]=item; ret.push(arr.slice());}然而答案通过率是25原创 2017-03-29 22:40:03 · 12923 阅读 · 1 评论 -
java:懂二进制
【题目描述】 世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 【输入例子】:1999 2299【输出例子】:7思路:刚开始的时候,并没有读懂题意,再多读几遍,就是要求两个二进制有几位不同。 因为我们知道两位二进制数在某一位上有不同,那么他们异或的时候,那一位就会是1。所以如果能够知道他们想与的结果有几个1不就可以了吗。原创 2017-04-09 21:36:57 · 276 阅读 · 0 评论 -
js:splice()方法
1.splice()方法用于插入、删除或替换数组的元素。 语法:splice(index,howmany,item1,item2…)例子: 1.在数组中添加元素var a=[1,2,3,4,5];splice(2,0,6,7);结果:1,2,6,7,3,4,52.移除数组的第三个元素,并在数组第三个位置添加元素var a=[1,2,3,4,5];splice(3,1,6,7)结果:1,2,原创 2017-03-31 15:07:41 · 254 阅读 · 0 评论 -
js:查找重复元素
找出数组 arr 中重复出现过的元素 输入例子:duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()输出例子:[1, 3, 4]思路 创建一个数组,然后排序原有的数组,判断a[i]等不等于a[i+1],并且在新创建的数组里是否已经存在了a[i]这个元素,如果不存在就push进新创建的数组代码实现function duplicates(arr) {var原创 2017-03-31 20:25:36 · 760 阅读 · 0 评论 -
js:全局变量
题目:给定的 js 代码中存在全局变量,请修复 function globals() { myObject = { name : 'Jory' }; return myObject;}【解析】 在Javascript语言中,声明变量使用的都是关键字var,如果不使用var而直接声明变量,则该变量为全局变量。 function globals() { v原创 2017-03-31 21:18:39 · 890 阅读 · 0 评论 -
js:函数声明
js函数声明的两种方式: 1.function functionName(){ … }//函数声明functionName=function(){ … }//函数表达式这两个方法之间的区别是重点!!! 第一个会在所有代码执行前被解析 第二个会在代码被执行时执行 如: 例子1function functions(flag){if(flag){function getValu原创 2017-03-31 23:34:35 · 573 阅读 · 0 评论 -
二叉树最小深度问题
【问题描述】: Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 给定一个二叉树,求出它的最小深度,最小深度是从根节点到最近的叶子节原创 2017-04-11 00:09:09 · 3944 阅读 · 5 评论 -
JS:编码规范 parseInt()
题目描述: 修改 js 代码中 parseInt 的调用方式,使之通过全部测试用例 输入例子:parse2Int(‘12’); parse2Int(‘12px’); parse2Int(‘0x12’)输出例子:12; 12; 0知识点 parseInt(string, radix)定义和用法parseInt() 函数可解析一个字符串,并返回一个整数。当参数 radix 的值为 0,或没有设置该参原创 2017-04-01 19:31:54 · 992 阅读 · 0 评论 -
给定区间[-2^31, 2^31]内的3个整数A、B和C,请判断A+B是否大于C。
给定区间[-2^31, 2^31]内的3个整数A、B和C,请判断A+B是否大于C。 输入描述:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出描述:对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。输入例子:41 2原创 2017-03-28 19:30:48 · 3722 阅读 · 0 评论