扁平化

前端笔试、面试题 - JS

心已入冬 提交于 2020-03-22 02:12:28
1、数组扁平化(数组降维) 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]]  ------>  [1, 2, 3, 4, 5] 2、给定一个数组,将数组中的所有0移动到末尾,并保持非0元素的顺序不改变。如 [0,1,0,3,12] 移动后的期望数组为 [1,3,12,0,0] 要求:1、不能创建新的数组来做操作    2、尽量少的操作次数 3、写出下列两行代码处理后的返回数据 ['1','2','3'].map(parseInt); ['1','2','3'].filter(parseInt); 来源: https://www.cnblogs.com/donghuang/p/12542511.html

数组扁平化

 ̄綄美尐妖づ 提交于 2020-03-05 21:30:25
需求:多维数组=>一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 1.第0种处理: 直接的调用arr_flat = arr.flat(Infinity); 2. 第一种处理 ary = str.replace(/(\[\]))/g, '').split(','); 3.第二种处理 str = str.replace(/(\[\]))/g, ''); str = '[' + str + ']'; ary = JSON.parse(str); 第三种处理:递归处理 let result = []; let fn = function(ary) { for(let i = 0; i < ary.length; i++) }{ let item = ary[i]; if (Array.isArray(ary[i])){ fn(item); } else { result.push(item); } } ` } 第四种处理: 用 reduce 实现数组的 flat 方法 function flatten(ary) { return ary.reduce((pre, cur) => { return pre.concat(Array.isArray(cur) ? flatten(cur) : cur

数组扁平化

心不动则不痛 提交于 2020-02-07 22:06:58
题目 在这道题目中,我们需要写一个数组扁平化的函数。 注意,你写的函数应该能够处理数组多级嵌套的情况。比如,[1, [2], [3, [4]]]在扁平化处理后的结果应为[1, 2, 3, 4] steamrollArray([1, [], [3, [[4]]]])应该返回[1, 3, 4] steamrollArray([1, {}, [3, [[4]]]])应该返回[1, {}, 3, 4] steamrollArray([[["a"]], [["b"]]])应该返回["a", "b"] 代码 var steamrollArray = function (arr) { let newArr = []; let fun = function (arr) { arr.forEach(item => { if (Array.isArray(item)) { fun(item) } else { newArr = newArr.concat(item) } }) } fun(arr) return newArr; } 来源: https://www.cnblogs.com/superlizhao/p/12274720.html

[LeetCode] 扁平化多级双向链表

我是研究僧i 提交于 2020-02-03 00:51:21
您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。 扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。 示例: 输入: 1---2---3---4---5---6--NULL | 7---8---9---10--NULL | 11--12--NULL 输出: 1-2-3-7-8-11-12-9-10-4-5-6-NULL 以上示例的说明: 给出以下多级双向链表: 我们应该返回如下所示的扁平双向链表: 解:迭代的方法,将child链接的双向链表插入到当前节点的后面,在插入之前,保存当前节点的next指针,然后一直沿着child节点的next节点走到底,将这两部连上,注意要将反向指针也连上,和cur->child要赋为nullptr。 /* // Definition for a Node. class Node { public: int val; Node* prev; Node* next; Node* child; }; */ class Solution { public: Node* flatten(Node* head) { if(!head) return nullptr; Node* cur = head; while(cur

1.AutoMapper核心:扁平化

自闭症网瘾萝莉.ら 提交于 2020-01-26 23:48:54
对象 - 对象映射的一个常见用法是获取一个复杂的对象模型,并将其展开成一个更简单的模型。 您可以采取复杂的模型,如: 1 public class Order 2 { 3 private readonly IList<OrderLineItem> _orderLineItems = new List<OrderLineItem>(); 4 5 public Customer Customer { get; set; } 6 7 public OrderLineItem[] GetOrderLineItems() 8 { 9 return _orderLineItems.ToArray(); 10 } 11 12 public void AddOrderLineItem(Product product, int quantity) 13 { 14 _orderLineItems.Add(new OrderLineItem(product, quantity)); 15 } 16 17 public decimal GetTotal() 18 { 19 return _orderLineItems.Sum(li => li.GetTotal()); 20 } 21 } 22 23 public class Product 24 { 25 public decimal Price {

LeetCode_341扁平化嵌套列表迭代器

大城市里の小女人 提交于 2020-01-17 00:33:10
给定一个嵌套的整型列表。设计一个迭代器,使其能够遍历这个整型列表中的所有整数。 列表中的项或者为一个整数,或者是另一个列表。 /** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * public interface NestedInteger { * * // @return true if this NestedInteger holds a single integer, rather than a nested list. * public boolean isInteger(); * * // @return the single integer that this NestedInteger holds, if it holds a single integer * // Return null if this NestedInteger holds a nested list * public Integer getInteger(); * * // @return the nested list that this

js数组扁平化之简单方法实现

杀马特。学长 韩版系。学妹 提交于 2020-01-16 03:02:03
扁平化 一句话解释,数组扁平化是指将一个多维数组(含嵌套)变为一维数组 扁平化之es5 toString const arr = [1, 2, 3, [4, 5, [6, 7]]]; const flatten = arr.toString().split(','); console.log(flatten); 优点:简单,方便,对原数据没有影响 缺点:最好数组元素全是数字或字符,不会跳过空位 join const arr = [1, 2, 3, [4, 5, [6, 7]]]; const flatten = arr.join(',').split(','); console.log(flatten); 优点和缺点同toString 扁平化之es6 flat const arr = [1, 2, 3, [4, 5, [6, 7]]]; const flatten = arr.flat(Infinity); console.log(flatten); 优点:会跳过空位,返回新数组,不会修改原数组。 缺点:无 扩展运算符(…) const arr = [1, 2, 3, [4, 5]]; console.log([].concat(...arr)); 优点:简单,方便 缺点:只能扁平化一层 总结 推荐使用es6的flat方法 来源: CSDN 作者: 和歌山 链接: https:/

341.扁平化嵌套列表迭代器

喜欢而已 提交于 2020-01-15 11:25:44
难度:中等 题目描述: 思路总结 : 方法一:用递归扁平化整个list 方法二:用栈在调用hasNext()的时候找到下一个元素 题解一: # """ # This is the interface that allows for creating nested lists. # You should not implement it, or speculate about its implementation # """ #class NestedInteger: # def isInteger(self) -> bool: # """ # @return True if this NestedInteger holds a single integer, rather than a nested list. # """ # # def getInteger(self) -> int: # """ # @return the single integer that this NestedInteger holds, if it holds a single integer # Return None if this NestedInteger holds a nested list # """ # # def getList(self) -> [NestedInteger]: #

个人对于数组扁平化的实现方式

柔情痞子 提交于 2020-01-06 22:47:47
Array.flat()是实现数组扁平化的一个api,在学习的过程中我自己实现了一下扁平化,如果有不对的地方望指正: let arr = [3,5,[3,6,[3,5]],4,[3,5]] //arr数组实现扁平化的方法 1, function flatten(arr) { return arr.reduce((result,item) => { return result.concat(Array.isArray(item)?flatten(item):item) },[]) }// 用reduce的方法实现 2, function flatten2(arr){ return arr.join(',').split(",").map(function(item){ return parseInt(item) }) } //将数组转为字符串,然后再转换为数组 3, function flatten3(arr){ let result = [] arr.map((item) =>{ if(Array.isArray(item)){ result = result.concat(flatten3(item)) }else result.push(item) }) return result } let arr3 = flatten(arr) let arr4 = flatten2

Android 扁平化button

﹥>﹥吖頭↗ 提交于 2019-12-27 03:25:50
View 创建 colors.xml 文件定义两个颜色 1. <resources> 2. <color name = "blue_pressed" > @android:color/holo_blue_dark </color> 3. <color name = "blue_normal" > @android:color/holo_blue_light </color> 4. </resources> 我们这里使用android的 HOLO 色调: 1. <!-- A dark Holo shade of blue --> 2. <color name = "holo_blue_dark" > #ff0099cc </color> 3. <!-- A light Holo shade of blue --> 4. <color name = "holo_blue_light" > #ff33b5e5 </color> 创建 dimen.xml 文件,定义圆角值和阴影高度。见下图 1. <resources> 2. <dimen name = "corner_radius" > 4dp </dimen> 3. <dimen name = "layer_padding" > 3dp< <dimen> 4. </resources> 我们用shape来定义button背景