过了太久我已经不记得这个是啥玩意了,隐约觉得第二第三题方法都太笨了

JVS-IOT设备上线失败的七大核心概念排障指南 物联网平台设备接入失败,本质是语义化通信链路中的校验断点。JVS-IOT以物模型为中枢、七类核心实体构成强依赖链,涵盖设备凭证、协议绑定、物模型定义、分组策略、数据解析脚本、设备影子及生命周期管理。其中设备凭证(如HMAC-SHA256动态密码)与物模型(字段类型/identifier严格匹配)是高频故障源,直接影响MQTT注册成功率与数据解析有效性。该机制广泛应用于ESP32-S3、STM32+4G、LoRa网关等边缘设备接入场景,支撑工业现场、高校实验室及中小制造企业的标准化部署。 阅读详情

1.找一个数列中的最长”上升下降“序列的数组下标
比如
8 //数列长度
1 3 1 2 5 4 3 9 //数列
0 1 2 3 4 5 6 7 //数列下标
那么下标就是
2 6

这个需要设参数来确保是上升还是下降序列,看代码吧。

var incredecre=function(array){
var incre;
var finalstart=-1,finalend=-1,maxlen=0;
var len=0,start=-1,end=-1;
if (array.length<3) {return false;}
else{
for (var i = 0; i < array.length-1; i++) {
    if(array[i]<array[i+1]) {
    if (incre!=true) {start=i;len=1;}    
    else{len++;}
    incre=true;
  }
  else {
    if(incre===true){
      len++;
      if(!array[i+2]||array[i+1]<=array[i+2]){
        len++;end=i+1;
        if(maxlen<len){maxlen=len;finalstart=start;finalend=end;}
      }
    }
    else if(incre===false){
      if(!array[i+2]||array[i+1]<=array[i+2]){
        len+=2;end=i+1;
        if(maxlen<len){maxlen=len;finalstart=start;finalend=end;}
      }
      else {len++;}
    }
    incre=false;}
    console.log("start "+start+" end "+end+" len "+len+"incre "+incre);
}
console.log("finalstart "+finalstart+"finalend "+finalend+"maxlen "+maxlen);
return true;
} //end of else
}; //end of function incredecre

只扫一遍。

为了表示效果,console台输出了整个过程,比如:这里写图片描述

测试代码如下,本来还想小数点保留1位的,但发现1位小数点我就开始晕了(啊,为我的脑容量默哀。。。。)所以都搞成了整数。

var createRandomList=function(){ 
var list=[];
for (var i = 0; i < 10; i++) {
  var item=10*Math.random();
  list.push(+item.toFixed(0));}
  return list;
};

如果上面那种不是非常好理解的话,还可以用找极大点的方法,先扫到某个数arrary[i]>array[i+1]&&array[i]>array[i-1],然后对这个极大点向左向右扫,找到start和end。但在坏的情况下,要扫2*array.length次。效率不高。

2.给出包括m个句子的查询组(B),和n个句子的被查询组(A)。对查询组中的每个句子,找出被查询组中相同单词数最多的句子。

更新:还是用hash做预处理。

下面是原来的暴力解法

var eqcount_sentence=function(sen1array,sen2array){
    var eqnum=0;
    for(var i=0;i<sen1array.length;i++){
        for(var j=0;j<sen2array.length;j++){
            if(sen1array[i]===sen2array[j])
            {eqnum++;}
        }
    }
    return eqnum;
};

var nm="3 2";
var n,m;
n=nm.split(" ")[0];
m=nm.split(" ")[1];
var l=[],w=[],senl=[],sen=[];
var eqnum=[];maxeq=[];
sen[0]="i love you";
sen[1]="i love i love";
sen[2]="you hate you";
for(var i=0;i<n;i++){
    // sen[i]=read_line();
    senl[i]=sen[i].split(" ");
}
var query=[],qul=[],qlen=[],x=[];
query[0]="love i";
query[1]="you hate love";
for(i=0;i<m;i++){
    //query[i]=read_line();
    qul[i]=query[i].split(" ");
    eqnum[i]=[];maxeq[i]=-1;x[i]=-1;
    for(var k=0;k<n;k++){
        eqnum[i][k]=eqcount_sentence(qul[i],senl[k]); //eqnum[i]是第i行查询行对第k行被查询行的相同单词数
        if(maxeq[i]<eqnum[i][k]){
        maxeq[i]=eqnum[i][k];   
        x[i]=k;     
        }
    }
console.log(sen[x[i]]);
}

关于怎么算两个句子中的相同单词数,我是这么理解的:
这里写图片描述

这是最笨的暴力求解法,有人说用hash,我想到了kmp,但都觉得不是很实用。而且kmp想来想去无从下手。毕竟是真实的单词和句子。扫n, 扫m感觉都是必须的。能优化的应该是那个两个句子统计相同单词数的地方吧。
一个是两个单词比较的部分,代码里直接是===,但如果将单词看作字符串的话,可以先比个长度再依次比,或者跳跃比(类似希尔排序),因为单词的前后缀可能相同,这样打乱顺序比较概率上说如果有不同可以尽快发现。
一个是用自带的indexOf来做,相信js 自带的功能跑的要快。。。

var eqcount_sentence=function(sen1array,sen2array){
    var eqnum=0;
    for(var i=0;i<sen1array.length;i++){ //sen1array当做查询组
        var item=sen1array[i];
        var y=sen2array.indexOf(item);
            if(y!=-1){
                y=sen2array.indexOf(item,y+1);
                eqnum++;
            }
    }
    return eqnum;
};

还有个好处就是不用把被查询组的句子转成单词数组了,可以少扫一遍段落。这个还是挺好的。
这样做的注意事项是,两个参数的位置不能颠倒,不然结果减半。
这里写图片描述

senl是啥见上面的代码,自定义的。没了编译器,js读入数据要自己搞,这个真愁人。赶紧学nodejs!

再有就是先学习查询句的结构了,比如看看有没有相同的单词,可以直接砍掉,然后对那个单词eq*2。这个如果查询句长的话也许有点用,但现实生活的话,一个句子中某个单词多次出现,应该是歌词吧。。。

3.给出A,B两个数组和条件组,每个条件组x,y两个数,找出满足Ai>=x&&Bi>=y的i的个数。隐含条件是A,B两个数组等长??

var counti=function(arr,brr,condition){
var num=0;
for(var i=0;i<arr.length;i++){
    if(arr[i]>=condition[0]&&brr[i]>=condition[1]){
      num++;
    }
}
return num;
};
var A="3 2 4";
var B="6 5 8";
var a=A.split(" ");
var b=B.split(" ");
condition1=[1,1];
condition2=[4,8];
counti(a,b,condition1);
counti(a,b,condition2);

结果是
3
1

不是很理解,感觉这也太简单了吧?不知道是不是理解错了题意,明天应该就有官方答案出来了。到时看看。
更新,啊啊,就知道没那么简单,肯定是要靠通过率卡优化的。回去整树状数组。

考试的时候出了点问题,一个都没通过。啊。等于编程空白了。
上午写了一道,把电脑锁在柜子里,晚上准备继续,发现柜子打不开了。。。守到8点多终于来了人把电脑解救出来。差一点电脑就要在柜子里过清明了。。。
登录网易官网想查询一下信息,说没有投递记录,换了另一个邮箱登录,说没有这个用户。可是笔试通知还是发到这个邮箱的。。。真是醉了。我可能投了个假简历。不过反正笔试的也不好,就随意吧。
去登录爱奇艺的招聘,发现居然注册过手机号,还是个男性头像,还是个非主流名字,完全没有印象。啊,我究竟有没有脑子?这是个老问题了。

最后是javascript的在线编程tips:

  • for循环不要用let 不要用es6
  • 如果让外部调试,一上来先写封装好的函数和console.log输出,不要直接print||read_line() 除非有把握一次成功。
  • 如果不让调试,唉,那就听天由命吧。
  • 赶紧瞅吧瞅吧node!
正确解决TypeError: xxx is not a function异常的有效解决方法 阅读详情

相关推荐

LVGL的基础知识总结

另外,还有自定义字库的使用,具体可参考开发手册。

qq_28576837的博客 7383

vue项目打包上线

vue项目打包之后会得到dist目录 该目录下有三个文件,是上传到服务器所需的 如果希望可以双击打开index.html,则需要提前在vue.config.js中配置 { publicPath: './' } 打包优化-路由懒加载 { path: '/login', component: () => import('@/views/login/index'), hidden: true }, 一个路由对一个组件,表示一个页面。懒加载...

DDAD9527的博客 5448

IMU预积分--详细推导过程

IMU预积分推导

weixin_51547017的博客 2万+

VueCli 3.0 配置 vue.config 优化完整版

基于vue.config可配置项,配置了 代码分割、启用gzip压缩、图片压缩、代码简化、去除注释、css按需加载、代理等操作

weixin_39759137的博客 6001

Simulink仿真避坑指南:如何设置步长、powergui和模块采样时间才能让控制周期更稳定

本文深入解析Simulink仿真中步长、powergui和模块采样时间的协同配置方法,帮助工程师解决控制周期不稳定问题。通过实际案例和参数调优技巧,指导用户精准设置仿真参数,确保电机控制、电力电子系统等工业仿真结果的可靠性。

weixin_42524762的博客 417

别再手动敲代码了!用STM32CubeMX+FreeRTOS图形化配置,5分钟搞定多任务通信框架

本文详细介绍了如何利用STM32CubeMX和FreeRTOS快速搭建多任务通信框架,大幅提升嵌入式开发效率。通过图形化配置工具,开发者可在5分钟内完成任务调度、时钟配置和内核对象生成,特别适合物联网设备开发。文章还提供了代码优化和调试技巧,帮助开发者轻松应对复杂应用场景。

weixin_30363285的博客 291

vueCli4配置config.optimization.minimizer(‘terser‘),去掉console.log、debugger、注释

vueCli4配置config.optimization.minimizer(‘terser’),生产环境去掉console.log debugger ```javascript const devFlag = process.env.NODE_ENV === 'development' chainWebpack: config => { config.when(!devFlag, config => { config.optimization.mini

qq_15006083的博客 1万+

Catia二次开发QueryInterface的操蛋问题

探索了很久,尝试录制宏,打开部件属性窗口,然后随意设置一些属性(必须改变一些东西才能录制成功,否则不会录制到任何东西),再看录制的结果,发现原来CATIAAnalyze是从Product那里来的。例如获得一个部件的体积,找到相关接口CATIAAnalyze,但是这个部件的CATIAAnalyze的对象不知道如何获取。总结一下,写Catia二开代码,就像漂亮国那款《莫里秀》 又名《爸爸死哪了》的综艺节目,大部分时间都是在找爸爸!Catia二开很痛苦,明明已经找到接口类,但是却不知道怎么获得这个接口类的对象。

gergul的专栏 746

【qml-3】qml与c++交互第二次尝试(类型注册)

本次记录的是类型方式,亦即把c++里写好的类,不实例化,而是把类型注册给qml,就像它自己的Button、Item一样,用的时候使用“{}”给它实例化。这么说起来好像更合适一些。

大橘子的博客 1256

ATAC-seq差异分析实战:从原始数据到GO富集(R/Bioconductor全流程)

本文提供了ATAC-seq差异分析的完整R/Bioconductor实战流程,涵盖从原始数据准备、一致峰集构建、计数矩阵生成,到使用DESeq2进行差异可及性分析,以及差异峰的基因组注释与GO富集分析。文章详细讲解了关键步骤、参数设置和常见问题,旨在帮助研究者获得可靠且可解释的生物学结果。

weixin_29246195的博客 228

hwasan / asan详细分析踩内存之一:Use after free

UAF漏洞全称为use after free ,即利用已经被free掉的堆块被再次利用,该漏洞的存在是因为程序编写者在free堆块部分没有将该堆块的fd指针改为0,进而导致该堆块可以被申请回来,3.内存块被free后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。2.堆块free后,对应指针没有被设置为NULL,即还可以调用会该堆块,当我们申请一个比该堆块小于等于的size时。

1394

webpack源码解析七(optimization)

前言 前面我们写了几篇文章用来介绍webpack源码,跟着官网结合demo把整个webpack配置撸了一遍: webpack源码解析一 webpack源码解析二(html-webpack-plugin插件) webpack源码解析三 webpack源码解析四 webpack源码解析五 webpack源码解析六(webpack-chain) 今天我们结合demo来看一下webpack的Optimization配置。 demo还是前面几节中的: https://github.com/913453448/we

vv_bug 4344

后仿真中《SDF反标必懂连载篇》之 探究 SDF延迟精度 与 timescale 精度问题

本篇文章,同样属于后仿真中的SDF反标系列文章内容之一。今天,将前仿真中的timescale 和 后仿真中 timescale+sdf 延迟数据,进行贯通讲解。不要忽视这部分内容,因为后仿真的成功准确与否,时间精度问题,很重要。为什么?接下来一一讲解。

那么菜的博客 2309

【JavaScript】.push is not function解决方案

push()是往数组中追加元素的一个函数 数组使用push函数报错,猛然一看,感觉不可思议,但事实就是使用时报错了,push这个函数肯定没有问题了,所以排查原因后,发现是代码写的有问题 原代码: var navArr = []; $(‘.nav a’).each(funtion(){ var thisText = $(this).text(); navArr = navArr.push(thisT...

weixin_42042886的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

解决TypeError: defineConfig is not a function报错问题

TypeError: defineConfig is not a function

weixin_42247414的博客 5474

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

记录Vue开发过程碰到的一些问题记录

组件 组件样式 scoped会把样式限制在组件内,不能影响其他组件或子组件,要想影响子组件可以使用深度选择器>>>,例如:.m-con >>> .u-center 解决前后端分离开发阶段测试跨域问题 proxyTable: { // 用于开发,解决前后端分离开发的跨域问题 '/api': { target: 'http://127.0.0.1:8000/', changeOrigin: true }, } // 跨

fdszjob1234的博客 457

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

前端config.js中配置移除控制台中的console,debugger

在本地开发中,会经常使用console.log(),debugger等来查看调试数据,如果没有及时清理,打包到测试或者生产环境,控制台就会有一堆打印的东西,看着很不友好,请保持前端开发的基本素养哈。

ChinaW_804的博客 690

vue-cli4项目初始配置及优化(改用terser去除console)

在使用配置完成的初始化仓库编写项目时发现了一些问题。排查之后发现uglifyjs-webpack-plugin不兼容es,所以改用terser去除console 其实在项目中搜索terser,你会发现在package-lock.json文件中@vue/cli-service的依赖中已经引入了terser-webpack-plugin并配置了。如图: 在编译启动时打印配置config.optimization.minimizer,如图 那么我们只要在这个基础上进行修改即可,代码如下: const reso

qq_33290980的博客 3562

vue3.0 vue.config.js 配置实战

项目常用配置 const path = require('path'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); function resolve(dir) { return path.join(__dirname, dir) } module.exports = { lintOnSav...

qq_39966730的博客 1276

2024年前端最全vue脚手架项目的详解_如何理解vue脚手架的实现逻辑,2024年我们程序员该如何进阶和规划

按照上述 .env 和 .env.development 文件的内容,如过我们运行npm run serve 在就先加载.env文件,之后加载.env.development文件,两个文件有同一个项,则后加载的文件就会覆盖掉第一个文件,也即是 .env.development 文件覆盖掉了.env文件的VUE_APP_NAME选项。大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。,当你通过绝对路径引用它时,留意应用将会部署到哪里。

2401_84411323的博客 1284

【webpack】提示报错:TypeError: options.plugins.unshift is not a function 的解决方法

这里写自定义目录标题欢迎使用Markdown编辑器代码解决运行 欢迎使用Markdown编辑器 初次使用webpack打包模块时,出现了这个错误 代码 /* webpack.config.js webpack的配置文件 作用:指示webpack干哪些活(当运行webpack指令时,会加载里面的配置) 所有构件工具都是基于nodejs平台运行的~模块化默认采用commonjs */ // resolve 用来拼接绝对路径 const { resolve } = require('pa

weixin_43681578的博客 3209

vue webpack打包去console

config.optimization.minimizer('terser').tap(args => { args[0].terserOptions.compress.drop_console = true return args })

peade的博客 475

[前端bug词典]TypeError: defineConfig is not a function

前端强者之路-——bug收集

belloc_li的博客 1万+

Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimizat

今天把之前的项目升级到webpack4报错了,记录一下解决方案 报错的原因是webpack4已经升级不支持这种写法了,也就是说不在plugins里面进行操作。而是放在了optimization里面,写法不变下面贴代码 const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); .... optimization: { m...

qq_25842063的博客 8165

defineConfig isnot a function错误

1、打开终端cd vue 文件夹。最后重启应该可以解决。

Geroge14的博客 3199

vuecli开启js代码压缩 以及代码分割

配置代码 chainWebpack: config => { config.optimization.minimize(true)// 开启压缩js代码 config.optimization.splitChunks({ // 开启代码分割 chunks: 'all' }) }, 启用gzip压缩(需要配置nginx,可以看出压缩后的...

阿臻 373
上一篇: javascript写算法(一) 动态规划:最长公共子序列
下一篇: CSS布局相关(自用,非常乱七八糟的笔记)
十方魔
博客等级 码龄10年 202粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值