请考虑以下问题陈述:
给定一个未排序的整数数组,找到一个添加到给定数字的子数组.如果有多个子数组,其中sum为给定数字,则打印其中任何一个.
Examples:
Input: arr[] = {1, 4, 20, 3, 10, 5}, sum = 33
Ouptut: Sum found between indexes 2 and 4
Input: arr[] = {10, 2, -2, -20, 10}, sum = -10
Ouptut: Sum found between indexes 0 to 3
Input: arr[] = {-10, 0, 2, -2, -20, 10}, sum = 20
Ouptut: No subarray with given sum exists
Run Code Online (Sandbox Code Playgroud)
在这个网站上,建议使用以下线性时间解决方案,当算法迭代数组时,使用map来存储当前子集的总和:
// Function to print subarray with sum as given sum
void subArraySum(int arr[], int n, int …Run Code Online (Sandbox Code Playgroud) 我已经制作了一个Scrapy蜘蛛,它可以从位于项目根目录中的脚本成功运行.因为我需要从同一个脚本运行来自不同项目的多个蜘蛛(这将是一个django应用程序根据用户的请求调用脚本),我将脚本从其中一个项目的根目录移动到父目录.由于某种原因,脚本不再能够获取项目的自定义设置,以便将已删除的结果传递到数据库表中.以下是我用来从脚本运行蜘蛛的scrapy文档中的代码:
def spiderCrawl():
settings = get_project_settings()
settings.set('USER_AGENT','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)')
process = CrawlerProcess(settings)
process.crawl(MySpider3)
process.start()
Run Code Online (Sandbox Code Playgroud)
是否需要导入一些额外的模块才能从项目外部获取项目设置?或者是否需要对此代码进行一些添加?下面我也有运行蜘蛛的脚本代码,谢谢.
from ticket_city_scraper.ticket_city_scraper import *
from ticket_city_scraper.ticket_city_scraper.spiders import tc_spider
from vividseats_scraper.vividseats_scraper import *
from vividseats_scraper.vividseats_scraper.spiders import vs_spider
tc_spider.spiderCrawl()
vs_spider.spiderCrawl()
Run Code Online (Sandbox Code Playgroud) 我创建了几个我打算与scrapyd同时运行的网络蜘蛛.我首先使用以下命令在Ubuntu 14.04中成功安装了scrapyd:pip install scrapyd,当我运行命令:scrapyd时,我在终端中得到以下输出:
2015-07-14 01:22:02-0400 [-] Log opened.
2015-07-14 01:22:02-0400 [-] twistd 13.2.0 (/usr/bin/python 2.7.6) starting up.
2015-07-14 01:22:02-0400 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2015-07-14 01:22:02-0400 [-] Site starting on 6800
2015-07-14 01:22:02-0400 [-] Starting factory <twisted.web.server.Site instance at 0x7f762f4391b8>
2015-07-14 01:22:02-0400 [Launcher] Scrapyd 1.1.0 started: max_proc=8, runner='scrapyd.runner'
Run Code Online (Sandbox Code Playgroud)
我相信我得到这个输出的事实表明scrapy正在发挥作用; 然而,当我运行命令:scrapyd部署作为文档,我得到的错误:scrapyd部署:命令未找到.如果安装成功,这怎么可能?我在配置文件中包含以下目标:
[deploy:scrapyd2]
url = http://scrapyd.mydomain.com/api/scrapyd/
username = name
password = secret
Run Code Online (Sandbox Code Playgroud)
我不确定目标是如何工作的,但我基本上是从文档中复制它,所以我认为它会起作用.有没有我应该导入或配置的东西,我没有?谢谢.
我不久前采用离散数学(我在其中学习了关于主定理,Big Theta/Omega/O),我似乎忘记了O(logn)和O(2 ^ n)之间的区别(不是理论意义上的大哦).我通常理解合并和快速排序等算法是O(nlogn),因为它们重复将初始输入数组划分为子数组,直到每个子数组的大小为1,然后再递归树,给出一个高度为logn的递归树+ 1.但是,如果你计算递归树的使用高度N/b ^ X = 1(当子问题的规模已经成为1中给出答案说这里),似乎你总是拿到的高度树是log(n).
如果你使用递归解决Fibonacci序列,我认为你也会得到一个logn大小的树,但由于某种原因,算法的Big O是O(2 ^ n).我在想,也许差别是因为你必须记住每个子问题的所有fib数,以获得实际的fib数,这意味着每个节点的值必须被调用,但似乎在合并排序中,值每个节点的数量也必须使用(或至少排序).这与二进制搜索不同,但是,您只能根据在树的每个级别进行的比较来访问某些节点,所以我认为这是混乱的来源.
具体来说,是什么导致Fibonacci序列具有与合并/快速排序等算法不同的时间复杂度?
问题陈述是:
给定一个整数数组,找到具有最大异或的子数组。
一些例子是:
Input: arr[] = {1, 2, 3, 4}
Output: 7
The subarray {3, 4} has maximum XOR value
Input: arr[] = {8, 1, 2, 12, 7, 6}
Output: 15
The subarray {1, 2, 12} has maximum XOR value
Run Code Online (Sandbox Code Playgroud)
我找到了一个quora 帖子,它提供了对问题解决方案的解释,但我不太能完全理解所解释的内容。
该帖子首先介绍了一个与上述问题类似的问题(帖子中的问题 1):
给定一个整数数组,我们必须找到 XOR 最大的两个元素
然后它描述了一个可以处理两种类型查询的 trie 数据结构:
- 插入一个数字 X
- 给定一个 Y,找出 Y 与迄今为止插入的所有数字的最大异或。如果我们有这个数据结构,我们将随时插入整数,并且使用第二类型的查询我们将找到最大的 XOR
假设我们的数字 Y 是 b1,b2...bn,其中 b1,b2.. 是二进制位。我们从 b1 开始。现在为了使 XOR 达到最大值,我们将在进行 XOR 之后尝试使最高有效位为 1。所以,如果 b1 是 0,我们需要一个 1,反之亦然。在 trie …
我使用Scrapy Framework制作了一个网络刮板,从这个网站获取音乐会门票数据.我已经能够成功地从页面上每个票证内的元素中获取数据,除了只能通过单击"票证"按钮进入票证页面并从票证中刮取票证价格来访问的价格.在页面上.
经过广泛的谷歌搜索,我发现Scrapy.js(基于Splash)可以在Scrapy中用于与页面上的JavaScript交互(例如需要点击的按钮).我已经看到了Splash用于与JavaScript交互的一些基本示例,但是没有一个示例Splash与Scrapy的集成(甚至在文档中都没有).
我一直在遵循使用项目加载器将scped元素存储在parse方法中的格式,然后发出一个请求,该请求应该转到另一个链接并通过调用第二个解析方法解析该页面中的html
(e.g. yield scrapy.Request(next_link, callback=self.parse_price)
Run Code Online (Sandbox Code Playgroud)
但是现在我将使用Scrapy js,这个代码会有所改变.为了整合Scrapyjs,我正在考虑使用与此类似的功能:
function main(splash)
splash:go("http://example.com")
splash:wait(0.5)
local title = splash:evaljs("document.title")
return {title=title}
Run Code Online (Sandbox Code Playgroud)
从这个网站,但由于javascript无法直接在python程序中编写,我如何/在哪里将该类函数合并到程序中,以便能够通过单击按钮导航到下一页并解析HTML?我显然非常擅长网络抓取,所以任何帮助都会非常感激.蜘蛛的代码如下:
from scrapy.contrib.spiders import CrawlSpider , Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.selector import Selector
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.loader.processor import Join, MapCompose
from concert_comparator.items import ComparatorItem
bandname = raw_input("Enter a bandname \n")
vs_url = "http://www.vividseats.com/concerts/" + bandname + "-tickets.html"
class MySpider(CrawlSpider):
handle_httpstatus_list = [416]
name = 'comparator'
allowed_domains = ["www.vividseats.com"]
start_urls = [vs_url] …Run Code Online (Sandbox Code Playgroud) 我正在通过破解编码采访书解决方案并注意到以下问题:
实现算法以确定字符串是否具有所有唯一字符.如果您不能使用其他数据结构怎么办?
这是提供的解决方案之一:
public static boolean isUniqueChars2(String str) {
boolean[] char_set = new boolean[256];
for (int i = 0; i < str.length(); i++) {
int val = str.charAt(i);
if (char_set[val]) return false;
char_set[val] = true;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
为什么char_set数组初始化为256?我原以为是因为有128个ascii字符,但我不确定.此外,这个解决方案似乎是在Java中,但如果在C++中完成,那么初始大小也是必要的吗?
我正在尝试更好地理解javascript中的命名空间,并找到了一个javascript立即调用的函数表达式的示例,它将窗口对象作为参数.这是它的代码:
var CG = CG || {};
CG.main = (function(window) {
var FOCAL_LENGTH = 8.0;
var context, width, height, startTime;
var init = function() {
var element = document.getElementById("canvas1");
context = element.getContext("2d");
width = element.width;
height = element.height;
startTime = (new Date()).getTime() / 1000.0;
tick();
}
var original_onload = window.onload || function() {};
window.onload = function() {
original_onload();
CG.main.init();
}
return {
init: init,
draw: draw_shape,
clear: clear_canvas
};
}(window));
Run Code Online (Sandbox Code Playgroud)
在命名空间定义的最后,在括号中有一个带窗口的行,我对它的功能感到困惑.我认为将窗口参数添加到定义末尾的目的是将全局窗口变量绑定到命名空间,然后命名空间将向窗口添加不同的属性,但我无法确定.
在另一个示例中,有一个随机变量名称传递给命名空间的定义,并且在命名空间定义的末尾,命名空间的实际名称作为参数传递:
var namespace = namespace || {};
// here …Run Code Online (Sandbox Code Playgroud) 我最近遇到了一个据说在技术面试中被问过的问题:
给定二叉搜索树的前序遍历,我们如何在不构建树的情况下识别叶节点?
例如:[5,3,2,4,8,7,9]
任何人发布它并且模糊不清,问题都是模糊的,我不确定这个方法应该是什么,我无法在网上找到经过验证的解决方案.
该问题应如何解决?
我使用Scrapy创建了一个网络刮板,它能够从这个网站上的每个票据中搜集元素,但由于页面上没有,所以不能刮取票价.当我尝试请求下一页来降低价格时,我无法得到错误:exceptions.TypeError:'XPathItemLoader'对象没有属性' getitem '.我只能使用项目加载器来抓取任何元素,这就是我目前正在使用的内容,而且我不确定将另一个页面上的已删除元素传递给项目加载器的正确过程(我已经看到了一种方法来实现它项目数据类型,但它不适用于此处).我想我可能在将元素提取到项目对象时遇到问题,因为我正在流水线化到数据库中,但我不确定.如果我下面发布的代码可以修改,以便正确爬行到下一页,刮掉价格,并将其添加到项目加载器,我认为应该解决问题.任何帮助将不胜感激.谢谢!
class MySpider(CrawlSpider):
handle_httpstatus_list = [416]
name = 'comparator'
allowed_domains = ["www.vividseats.com"]
start_urls = [vs_url]
tickets_list_xpath = './/*[@itemtype="http://schema.org/Event"]'
def parse_price(self, response):
#First attempt at trying to load price into item loader
loader.add_xpath('ticketPrice' , '//*[@class="eventTickets lastChild"]/div/div/@data-origin-price')
print 'ticket price'
def parse(self, response):
selector = HtmlXPathSelector(response)
# iterate over tickets
for ticket in selector.select(self.tickets_list_xpath):
loader = XPathItemLoader(ComparatorItem(), selector=ticket)
# define loader
loader.default_input_processor = MapCompose(unicode.strip)
loader.default_output_processor = Join()
# iterate over fields and add xpaths to the loader
loader.add_xpath('eventName' …Run Code Online (Sandbox Code Playgroud) algorithm ×4
arrays ×4
python ×4
scrapy ×4
web-scraping ×4
tree ×3
c++ ×2
javascript ×2
python-2.7 ×2
django ×1
html ×1
java ×1
namespaces ×1
recursion ×1
scrapyd ×1
sorting ×1
trie ×1
twisted ×1